<!DOCTYPE html>
<!-- saved from url=(0049)https://mp.weixin.qq.com/s/FpyIj7vVzjpDxUyYuCkmXQ -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">


        <script nonce="" type="text/javascript">
            window.logs = {
                pagetime: {}
            };
            window.logs.pagetime['html_begin'] = (+new Date());
        </script>
        
<script nonce="" type="text/javascript">
    var biz = ""||"MzA3NzM0NzkxMQ==";
    var sn = "" || ""|| "be2ab28ec20a79098a28a074e14f0810";
    var mid = "" || ""|| "2655359644";
    var idx = "" || "" || "2";
    window.__allowLoadResFromMp = true; 
    
    </script>
<script nonce="" type="text/javascript">
var page_begintime=+new Date,is_rumor="",norumor="";
1*is_rumor&&!(1*norumor)&&biz&&mid&&(document.referrer&&-1!=document.referrer.indexOf("mp.weixin.qq.com/mp/rumor")||(location.href="http://mp.weixin.qq.com/mp/rumor?action=info&__biz="+biz+"&mid="+mid+"&idx="+idx+"&sn="+sn+"#wechat_redirect"));
</script>
<script nonce="" type="text/javascript">
var MutationObserver=window.WebKitMutationObserver||window.MutationObserver||window.MozMutationObserver,isDangerSrc=function(t){
if(t){
var e=t.match(/http(?:s)?:\/\/([^\/]+?)(\/|$)/);
if(e&&!/qq\.com(\:8080)?$/.test(e[1])&&!/weishi\.com$/.test(e[1]))return!0;
}
return!1;
},ishttp=0==location.href.indexOf("http://");
-1==location.href.indexOf("safe=0")&&ishttp&&"function"==typeof MutationObserver&&"mp.weixin.qq.com"==location.host&&(window.__observer_data={
count:0,
exec_time:0,
list:[]
},window.__observer=new MutationObserver(function(t){
window.__observer_data.count++;
var e=new Date,r=[];
t.forEach(function(t){
for(var e=t.addedNodes,o=0;o<e.length;o++){
var n=e[o];
if("SCRIPT"===n.tagName){
var i=n.src;
isDangerSrc(i)&&(window.__observer_data.list.push(i),r.push(n)),!i&&window.__nonce_str&&n.getAttribute("nonce")!=window.__nonce_str&&(window.__observer_data.list.push("inlinescript_without_nonce"),
r.push(n));
}
}
});
for(var o=0;o<r.length;o++){
var n=r[o];
n.parentNode&&n.parentNode.removeChild(n);
}
window.__observer_data.exec_time+=new Date-e;
}),window.__observer.observe(document,{
subtree:!0,
childList:!0
})),function(){
if(-1==location.href.indexOf("safe=0")&&Math.random()<.01&&ishttp&&HTMLScriptElement.prototype.__lookupSetter__&&"undefined"!=typeof Object.defineProperty){
window.__danger_src={
xmlhttprequest:[],
script_src:[],
script_setAttribute:[]
};
var t="$"+Math.random();
HTMLScriptElement.prototype.__old_method_script_src=HTMLScriptElement.prototype.__lookupSetter__("src"),
HTMLScriptElement.prototype.__defineSetter__("src",function(t){
t&&isDangerSrc(t)&&window.__danger_src.script_src.push(t),this.__old_method_script_src(t);
});
var e="element_setAttribute"+t;
Object.defineProperty(Element.prototype,e,{
value:Element.prototype.setAttribute,
enumerable:!1
}),Element.prototype.setAttribute=function(t,r){
"SCRIPT"==this.tagName&&"src"==t&&isDangerSrc(r)&&window.__danger_src.script_setAttribute.push(r),
this[e](t,r);
};
}
}();
</script>

        <link rel="dns-prefetch" href="https://res.wx.qq.com/">
<link rel="dns-prefetch" href="https://mmbiz.qpic.cn/">
<link rel="shortcut icon" type="image/x-icon" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/favicon22c41b.ico">
<script nonce="" type="text/javascript">
    String.prototype.html = function(encode) {
        var replace =["&#39;", "'", "&quot;", '"', "&nbsp;", " ", "&gt;", ">", "&lt;", "<", "&amp;", "&", "&yen;", "¥"];
        if (encode) {
            replace.reverse();
        }
        for (var i=0,str=this;i< replace.length;i+= 2) {
             str=str.replace(new RegExp(replace[i],'g'),replace[i+1]);
        }
        return str;
    };

    window.isInWeixinApp = function() {
        return /MicroMessenger/.test(navigator.userAgent);
    };

    window.getQueryFromURL = function(url) {
        url = url || 'http://qq.com/s?a=b#rd'; 
        var tmp = url.split('?'),
            query = (tmp[1] || "").split('#')[0].split('&'),
            params = {};
        for (var i=0; i<query.length; i++) {
            var arg = query[i].split('=');
            params[arg[0]] = arg[1];
        }
        if (params['pass_ticket']) {
        	params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g,"+"));
        }
        return params;
    };

    (function() {
	    var params = getQueryFromURL(location.href);
        window.uin = params['uin'] || "" || '';
        window.key = params['key'] || "" || '';
        window.wxtoken = params['wxtoken'] || '';
        window.pass_ticket = params['pass_ticket'] || '';
        window.appmsg_token = "";
    })();

    function wx_loaderror() {
        if (location.pathname === '/bizmall/reward') {
            new Image().src = '/mp/jsreport?key=96&content=reward_res_load_err&r=' + Math.random();
        }
    }

</script>

<script nonce="" type="text/javascript">
        window.__moon_report_uin = "0";
            window.no_moon_ls = 0;
    </script>
        <title>RunLoop解决卡顿问题</title>
        
<style>html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.6}body{-webkit-touch-callout:none;font-family:-apple-system-font,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#f3f3f3;line-height:inherit}body.rich_media_empty_extra{background-color:#fff}body.rich_media_empty_extra .rich_media_area_primary:before{display:none}h1,h2,h3,h4,h5,h6{font-weight:400;font-size:16px}*{margin:0;padding:0}a{color:#607fa6;text-decoration:none}.rich_media_inner{font-size:16px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.rich_media_area_primary{position:relative;padding:20px 15px 15px;background-color:#fff}.rich_media_area_primary.voice{padding-top:66px}.rich_media_area_primary:before{content:" ";position:absolute;left:0;top:0;width:100%;height:1px;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5);top:auto;bottom:-2px}.rich_media_area_primary .original_img_wrp{display:inline-block;font-size:0}.rich_media_area_primary .original_img_wrp .tips_global{display:block;margin-top:.5em;font-size:14px;text-align:right;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.rich_media_area_extra{padding:0 15px 0}.rich_media_title{margin-bottom:10px;line-height:1.4;font-weight:400;font-size:24px}.icon_original_tag_primary{display:inline-block;padding:1px .65em;margin-top:-0.2em;vertical-align:middle;line-height:1.4;font-size:12px;border-top-left-radius:.85em 50%;-moz-border-radius-topleft:.85em 50%;-webkit-border-top-left-radius:.85em 50%;border-top-right-radius:.85em 50%;-moz-border-radius-topright:.85em 50%;-webkit-border-top-right-radius:.85em 50%;border-bottom-left-radius:.85em 50%;-moz-border-radius-bottomleft:.85em 50%;-webkit-border-bottom-left-radius:.85em 50%;border-bottom-right-radius:.85em 50%;-moz-border-radius-bottomright:.85em 50%;-webkit-border-bottom-right-radius:.85em 50%;border:1px solid #9e9e9e;color:#8c8c8c}.icon_original_tag_primary.title_tag{background-color:#e94442;border-color:#d04b4e;color:#fff;margin-bottom:.5em;padding:2px .65em;border-top-left-radius:.95em 50%;-moz-border-radius-topleft:.95em 50%;-webkit-border-top-left-radius:.95em 50%;border-top-right-radius:.95em 50%;-moz-border-radius-topright:.95em 50%;-webkit-border-top-right-radius:.95em 50%;border-bottom-left-radius:.95em 50%;-moz-border-radius-bottomleft:.95em 50%;-webkit-border-bottom-left-radius:.95em 50%;border-bottom-right-radius:.95em 50%;-moz-border-radius-bottomright:.95em 50%;-webkit-border-bottom-right-radius:.95em 50%}.rich_media_meta_list{margin-bottom:18px;line-height:20px;font-size:0}.rich_media_meta_list em{font-style:normal}.rich_media_meta{display:inline-block;vertical-align:middle;margin-right:8px;margin-bottom:10px;font-size:16px}.meta_original_tag{display:inline-block;vertical-align:middle;padding:1px .5em;border:1px solid #9e9e9e;color:#8c8c8c;border-top-left-radius:20% 50%;-moz-border-radius-topleft:20% 50%;-webkit-border-top-left-radius:20% 50%;border-top-right-radius:20% 50%;-moz-border-radius-topright:20% 50%;-webkit-border-top-right-radius:20% 50%;border-bottom-left-radius:20% 50%;-moz-border-radius-bottomleft:20% 50%;-webkit-border-bottom-left-radius:20% 50%;border-bottom-right-radius:20% 50%;-moz-border-radius-bottomright:20% 50%;-webkit-border-bottom-right-radius:20% 50%;font-size:15px;line-height:1.1}.meta_enterprise_tag img{width:30px;height:30px!important;display:block;position:relative;margin-top:-3px;border:0}.rich_media_meta_text{color:#8c8c8c}span.rich_media_meta_nickname{display:none}.rich_media_thumb_wrp{margin-bottom:6px}.rich_media_thumb_wrp .original_img_wrp{display:block}.rich_media_thumb{display:block;width:100%}.rich_media_content{overflow:hidden;color:#3e3e3e}.rich_media_content *{max-width:100%!important;box-sizing:border-box!important;-webkit-box-sizing:border-box!important;word-wrap:break-word!important}.rich_media_content p{clear:both;min-height:1em}.rich_media_content em{font-style:italic}.rich_media_content fieldset{min-width:0}.rich_media_content .list-paddingleft-2{padding-left:2.2em}.rich_media_content .list-paddingleft-2 .list-paddingleft-2{padding-left:30px}.rich_media_content blockquote{margin:0;padding-left:10px;border-left:3px solid #dbdbdb}img{height:auto!important}@media screen and (device-aspect-ratio:2/3),screen and (device-aspect-ratio:40/71){.meta_original_tag{padding-top:0}}@media(min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2){.mm_appmsg .rich_media_inner,.mm_appmsg .rich_media_meta,.mm_appmsg .discuss_list,.mm_appmsg .rich_media_extra,.mm_appmsg .title_tips .tips{font-size:17px}.mm_appmsg .meta_original_tag{font-size:15px}}@media(min-device-width:414px) and (max-device-width:736px) and (-webkit-min-device-pixel-ratio:3){.mm_appmsg .rich_media_title{font-size:25px}}@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait){.rich_media_area_extra{padding-bottom:34px}}@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:landscape){.rich_media_area_primary{padding:20px 59px 15px 59px}.rich_media_area_extra{padding:0 59px 21px 59px}}@media screen and (min-width:1024px){.rich_media{width:740px;margin-left:auto;margin-right:auto}.rich_media_inner{padding:20px}body{background-color:#fff}}@media screen and (min-width:1025px){body{font-family:"Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif}.rich_media{position:relative}.rich_media_inner{background-color:#fff;padding-bottom:100px}}.radius_avatar{display:inline-block;background-color:#fff;padding:3px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;overflow:hidden;vertical-align:middle}.radius_avatar img{display:block;width:100%;height:100%;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;background-color:#eee}.cell{padding:.8em 0;display:block;position:relative}.cell_hd,.cell_bd,.cell_ft{display:table-cell;vertical-align:middle;word-wrap:break-word;word-break:break-all;white-space:nowrap}.cell_primary{width:2000px;white-space:normal}.flex_cell{padding:10px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.flex_cell_primary{width:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;box-flex:1;flex:1}.original_tool_area{display:block;padding:.75em 1em 0;-webkit-tap-highlight-color:rgba(0,0,0,0);color:#3e3e3e;border:1px solid #eaeaea;margin:20px 0}.original_tool_area .tips_global{position:relative;padding-bottom:.5em;font-size:15px}.original_tool_area .tips_global:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #dbdbdb;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.original_tool_area .radius_avatar{width:27px;height:27px;padding:0;margin-right:.5em}.original_tool_area .radius_avatar img{height:100%!important}.original_tool_area .flex_cell_bd{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.original_tool_area .flex_cell_ft{font-size:14px;color:#8c8c8c;padding-left:1em;white-space:nowrap}.original_tool_area .icon_access:after{content:" ";display:inline-block;height:8px;width:8px;border-width:1px 1px 0 0;border-color:#cbcad0;border-style:solid;transform:matrix(0.71,0.71,-0.71,0.71,0,0);-ms-transform:matrix(0.71,0.71,-0.71,0.71,0,0);-webkit-transform:matrix(0.71,0.71,-0.71,0.71,0,0);position:relative;top:-2px;top:-1px}.weui_loading{width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:weuiLoading 1s steps(12,end) infinite;animation:weuiLoading 1s steps(12,end) infinite;background:transparent url() no-repeat;-webkit-background-size:100%;background-size:100%}@-webkit-keyframes weuiLoading{0%{-webkit-transform:rotate3d(0,0,1,0deg)}100%{-webkit-transform:rotate3d(0,0,1,360deg)}}@keyframes weuiLoading{0%{-webkit-transform:rotate3d(0,0,1,0deg)}100%{-webkit-transform:rotate3d(0,0,1,360deg)}}.gif_img_wrp{display:inline-block;font-size:0;position:relative;font-weight:400;font-style:normal;text-indent:0;text-shadow:none 1px 1px rgba(0,0,0,0.5)}.gif_img_wrp img{vertical-align:top}.gif_img_tips{background:rgba(0,0,0,0.6)!important;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#99000000',endcolorstr = '#99000000');border-top-left-radius:1.2em 50%;-moz-border-radius-topleft:1.2em 50%;-webkit-border-top-left-radius:1.2em 50%;border-top-right-radius:1.2em 50%;-moz-border-radius-topright:1.2em 50%;-webkit-border-top-right-radius:1.2em 50%;border-bottom-left-radius:1.2em 50%;-moz-border-radius-bottomleft:1.2em 50%;-webkit-border-bottom-left-radius:1.2em 50%;border-bottom-right-radius:1.2em 50%;-moz-border-radius-bottomright:1.2em 50%;-webkit-border-bottom-right-radius:1.2em 50%;line-height:2.3;font-size:11px;color:#fff;text-align:center;position:absolute;bottom:10px;left:10px;min-width:65px}.gif_img_tips.loading{min-width:75px}.gif_img_tips i{vertical-align:middle;margin:-0.2em .73em 0 -2px}.gif_img_play_arrow{display:inline-block;width:0;height:0;border-width:8px;border-style:dashed;border-color:transparent;border-right-width:0;border-left-color:#fff;border-left-style:solid;border-width:5px 0 5px 8px}.gif_img_loading{width:14px;height:14px}i.gif_img_loading{margin-left:-4px}.gif_bg_tips_wrp{position:relative;height:0;line-height:0;margin:0;padding:0}.gif_bg_tips_wrp .gif_img_tips_group{position:absolute;top:0;left:0;z-index:9999}.gif_bg_tips_wrp .gif_img_tips_group .gif_img_tips{top:0;left:0;bottom:auto}.rich_media_global_msg{position:fixed;top:0;left:0;right:0;padding:1em 35px 1em 15px;z-index:2;background-color:#c6e0f8;color:#8c8c8c;font-size:13px}.rich_media_global_msg .icon_closed{position:absolute;right:15px;top:50%;margin-top:-5px;line-height:300px;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/icon_appmsg_msg_closed_sprite.2x2eb52b.png) no-repeat 0 0;width:11px;height:11px;vertical-align:middle;display:inline-block;-webkit-background-size:100% auto;background-size:100% auto}.rich_media_global_msg .icon_closed:active{background-position:0 -17px}.rich_media_global_msg.voice{color:#1aad19;background-color:#e8f6e8;padding-left:43.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rich_media_global_msg.voice .ic_voice{position:absolute;top:50%;margin-top:-10px;left:15px;display:inline-block;width:13.3px;height:18.3px;background:url() no-repeat center;background-size:contain}.rich_media_global_msg.voice .icon_more{position:absolute;right:15px;top:50%;margin-top:-6.5px;width:8px;height:13px;background:url() no-repeat center;background-size:contain}.preview_appmsg .rich_media_title{margin-top:1.9em}@media screen and (min-width:1024px){.rich_media_global_msg{position:relative;margin:0 20px}.preview_appmsg .rich_media_title{margin-top:0}}.pages_reset{color:#3e3e3e;line-height:1.6;font-size:16px;font-weight:400;font-style:normal;text-indent:0;letter-spacing:normal;text-align:left;text-decoration:none;white-space:normal}.weapp_element,.weapp_display_element,.mp-miniprogram{display:block;margin:1em 0}.share_audio_context{margin:16px 0}.weapp_text_link{font-size:17px}.weapp_text_link:before{content:'';display:inline-block;line-height:1;background-size:12px 12px;background-repeat:no-repeat;background-image:url('');vertical-align:middle;font-size:11px;color:#888;border-radius:10px;background-color:#f4f4f4;margin-right:6px;margin-top:-4px;background-position:center;height:20px;width:20px}.weui-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,0.6)}.weui-dialog{position:fixed;z-index:5000;width:80%;max-width:300px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#fff;text-align:center;border-radius:3px;overflow:hidden}.weui-dialog__hd{padding:1.3em 1.6em .5em}.weui-dialog__title{font-weight:400;font-size:18px}.weui-dialog__bd{padding:0 1.6em .8em;min-height:40px;font-size:15px;line-height:1.3;word-wrap:break-word;word-break:break-all;color:#999}.weui-dialog__bd:first-child{padding:2.7em 20px 1.7em;color:#353535}.weui-dialog__ft{position:relative;line-height:48px;font-size:18px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-dialog__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.weui-dialog__btn{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative}.weui-dialog__btn:active{background-color:#eee}.weui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #d5d5d6;color:#d5d5d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(0.5);transform:scaleX(0.5)}.weui-dialog__btn:first-child:after{display:none}.weui-dialog__btn_default{color:#353535}.weui-dialog__btn_primary{color:#0bb20c}</style>
<style>
        </style>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_pc3d171e.css">
<![endif]-->

    <script src="./RunLoop解决卡顿问题_files/fakehash38c7af.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/app_card3d45b2.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/a_tpl.html2c6e7c.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/voice_component3d3efa.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/comment_utils3d171e.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/autoread3af14e.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/page_mp_article_improve_combo.css3d45b2.js" type="text/javascript" async=""></script><script src="./RunLoop解决卡顿问题_files/index3d3efa.js" type="text/javascript" async=""></script><style id="page/appmsg/page_mp_article_improve_combo.css">.selectTdClass{background-color:#edf5fa!important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd!important}table{margin-bottom:10px;border-collapse:collapse;display:table;width:100%!important}td,th{word-wrap:break-word;word-break:break-all;padding:5px 10px;border:1px solid #DDD}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center}th{border-top:2px solid #BBB;background:#f7f7f7}.ue-table-interlace-color-single{background-color:#fcfcfc}.ue-table-interlace-color-double{background-color:#f7faff}td p{margin:0;padding:0}.res_iframe{display:block;width:100%;background-color:transparent;border:0}.shopcard_iframe{margin:14px 0;height:95px}.vote_area{display:block;position:relative;margin:14px 0;white-space:normal!important}.vote_iframe{display:block;width:100%;height:100%;background-color:transparent;border:0}form{display:none!important}@media screen and (min-width:0\0) and (min-resolution:72dpi){.rich_media_content table{table-layout:fixed!important}.rich_media_content td,.rich_media_content th{width:auto!important}}.tc{text-align:center}.tl{text-align:left}.tr{text-align:right}.tips_global{color:#8c8c8c}.rich_split_tips{margin:20px 0;min-height:24px}.rich_media_tool_tips{margin-bottom:8px}.rich_media_tool{overflow:hidden;padding-top:15px;line-height:32px}.rich_media_tool .meta_primary{float:left;margin-right:10px}.rich_media_tool .meta_extra{float:right;margin-left:10px}.rich_media_tool .meta_praise{margin-right:0;margin-left:8px}.media_tool_meta i{vertical-align:0;position:relative;top:1px;margin-right:3px}.meta_praise{-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0;min-width:3.5em}.meta_praise .praise_num{display:inline-block;vertical-align:top}.icon_praise_gray{background:transparent url() no-repeat 0 0;width:13px;height:13px;vertical-align:middle;display:inline-block;-webkit-background-size:100% auto;background-size:100% auto}.icon_praise_gray.praised{background-position:0 -18px}.praised .icon_praise_gray{background-position:0 -18px}.rich_split_tips{margin:20px 0;min-height:24px}.rich_media_tool_tips{margin-bottom:8px}.rich_media_tool{overflow:hidden;padding-top:15px;line-height:32px}.rich_media_tool .meta_primary{float:left;margin-right:10px}.rich_media_tool .meta_primary.article_modify_tag{margin-bottom:0;float:none;color:#bcbcbc;font-size:14px}.rich_media_tool .meta_extra{float:right;margin-left:10px}.rich_media_tool .meta_praise{margin-right:0;margin-left:8px}.media_tool_meta i{vertical-align:0;position:relative;top:1px;margin-right:3px}.meta_praise{-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0;min-width:3.5em}.meta_praise .praise_num{display:inline-block;vertical-align:top}.icon_praise_gray{background:transparent url() no-repeat 0 0;width:13px;height:13px;vertical-align:middle;display:inline-block;-webkit-background-size:100% auto;background-size:100% auto}.icon_praise_gray.praised{background-position:0 -18px}.praised .icon_praise_gray{background-position:0 -18px}.rich_tips{margin-top:25px;margin-bottom:0;min-height:24px;text-align:center}.rich_tips .tips{display:inline-block;vertical-align:middle}.rich_tips .tips,.rich_tips .rich_icon{vertical-align:middle}.rich_tips .rich_icon{margin-top:-3px 5px 0 0}.rich_tips.with_line{border-top:1px dotted #e1e1e1}.rich_tips.with_line .tips{position:relative;top:-12px;padding-left:16px;padding-right:16px;background-color:#f3f3f3}.btn_primary{background-color:#04be02}.btn_primary:not(.btn_disabled):visited{color:#fff}.btn_primary:not(.btn_disabled):active{color:rgba(255,255,255,0.4);background-color:#039702}.btn_disabled{color:rgba(255,255,255,0.6)}.rich_tips.with_line{line-height:16px}.rich_tips.with_line .tips{top:-11px;padding-left:.35em;padding-right:.35em}.title_tips{margin-top:35px}.title_tips .tips{color:#868686;font-size:16px}.loading_tips{margin:36px 0 20px}.title_bottom_tips{margin-top:-10px}.icon_arrow_gray{width:7px}.icon_loading_white{width:16px}.icon_loading_white.icon_before{margin-right:1em}.icon_loading_white.icon_after{margin-left:1em}.btn{display:block;padding-left:14px;padding-right:14px;font-size:18px;text-align:center;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;color:#fff;line-height:42px;-webkit-tap-highlight-color:rgba(255,255,255,0)}.btn.btn_inline{display:inline-block}.rich_media_extra{overflow:hidden}.sougou_body .rich_media_area_primary{margin-top:10px}.sougou_body .rich_media_area_primary:first-child{margin-top:0}.sougou_body .rich_media_area_primary.sougou ul{padding-left:0;list-style-type:none}.sougou_body .rich_media_area_extra{margin-top:10px;background-color:#fff}.sougou_body .rich_media_area_title{font-size:16px;margin-bottom:.5em}.sougou_body .relate_article_list{font-size:15px}.sougou_body .relate_article_link{display:block;padding:.35em 0;color:#8c8c8c;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sougou_body .rich_tips.discuss_title_line{text-align:left;margin-top:0;padding:20px 0 .5em;border-width:0;line-height:1.6}.sougou_body .rich_tips.discuss_title_line .tips{position:static;padding:0;color:#3e3e3e}.sougou_body .rich_tips.with_line .tips{background-color:#fff}.sougou_body .rich_split_tips{margin:0;padding:20px 0}.sougou_body .rich_media_extra .loading_tips{margin:0;padding:20px 0}.emotion_tool{position:relative;overflow:hidden}.pic_emotion_switch_wrp{margin-left:15px;margin-bottom:6px;display:inline-block;font-size:0}.pic_emotion_switch_wrp img{width:35px;display:block}.pic_emotion_switch_wrp .pic_active{display:none}.pic_emotion_switch_wrp:active .pic_default{display:none}.pic_emotion_switch_wrp:active .pic_active{display:block}.emotion_switch{margin-left:15px;margin-bottom:6px;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_tool.2x278965.png) no-repeat 0 0;width:35px;height:35px;vertical-align:middle;display:inline-block;-webkit-background-size:35px auto;background-size:35px auto}.emotion_switch:active{background-position:0 -40px}.emotion_panel_arrow_wrp{position:absolute;margin-top:-6px;margin-left:26px}.emotion_panel_arrow_wrp .emotion_panel_arrow{position:absolute;display:inline-block;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;border-top-width:0;border-bottom-color:#e5e5e7;border-bottom-style:solid}.emotion_panel_arrow_wrp .arrow_in{border-bottom-color:#f6f6f8;top:1px}.emotion_panel{background-color:#f6f6f8;position:relative}.emotion_panel:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e3e3e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.emotion_panel:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid #e3e3e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.emotion_list_wrp{overflow:hidden;position:relative;font-size:0;white-space:nowrap}.emotion_list{padding:10px 15px 0;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:normal;display:inline-block;vertical-align:top}.emotion_list:last-child .emotion_item.del{position:absolute;bottom:0;right:18px}.emotion_item{display:inline-block;width:36px;height:36px;margin-bottom:5px;text-align:center;line-height:36px}.emotion_navs{text-align:center;padding-bottom:5px}.emotion_nav{display:inline-block;width:8px;height:8px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;overflow:hidden;background-color:#bbb;margin:0 5px}.emotion_nav.current{background-color:#8c8c8c}.icon_emotion{width:22px;height:22px;vertical-align:middle;display:inline-block;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/icon_emotion_panel.2x3518c6.png) no-repeat 0 0;-webkit-background-size:22px auto;background-size:22px auto}.icon_emotion.del{background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_tool.2x278965.png) no-repeat 0 0;width:28px;height:28px;vertical-align:middle;display:inline-block;background-position:2px -62px;-webkit-background-size:28px auto;background-size:28px auto}.icon_emotion.del:active{background-position:2px -92px}.icon_emotion_single{width:22px;height:22px;vertical-align:middle;display:inline-block;-webkit-background-size:22px auto;background-size:22px auto}.icon_smiley_0{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_03518c6.png)}.icon_smiley_1{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_13518c6.png)}.icon_smiley_2{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_23518c6.png)}.icon_smiley_3{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_33518c6.png)}.icon_smiley_4{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_43518c6.png)}.icon_smiley_5{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_53518c6.png)}.icon_smiley_6{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_63518c6.png)}.icon_smiley_7{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_73518c6.png)}.icon_smiley_8{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_83518c6.png)}.icon_smiley_9{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_93518c6.png)}.icon_smiley_10{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_103518c6.png)}.icon_smiley_11{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_113518c6.png)}.icon_smiley_12{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_123518c6.png)}.icon_smiley_13{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_133518c6.png)}.icon_smiley_14{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_143518c6.png)}.icon_smiley_15{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_153518c6.png)}.icon_smiley_17{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_173518c6.png)}.icon_smiley_18{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_183518c6.png)}.icon_smiley_19{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_193518c6.png)}.icon_smiley_20{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_203518c6.png)}.icon_smiley_21{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_213518c6.png)}.icon_smiley_22{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_223518c6.png)}.icon_smiley_23{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_233518c6.png)}.icon_smiley_25{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_253518c6.png)}.icon_smiley_26{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_263518c6.png)}.icon_smiley_27{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_273518c6.png)}.icon_smiley_28{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_283518c6.png)}.icon_smiley_29{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_293518c6.png)}.icon_smiley_30{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_303518c6.png)}.icon_smiley_31{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_313518c6.png)}.icon_smiley_32{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_323518c6.png)}.icon_smiley_33{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_333518c6.png)}.icon_smiley_34{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_343518c6.png)}.icon_smiley_36{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_363518c6.png)}.icon_smiley_37{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_373518c6.png)}.icon_smiley_38{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_383518c6.png)}.icon_smiley_39{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_393518c6.png)}.icon_smiley_40{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_403518c6.png)}.icon_smiley_41{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_413518c6.png)}.icon_smiley_42{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_423518c6.png)}.icon_smiley_44{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_443518c6.png)}.icon_smiley_45{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_453518c6.png)}.icon_smiley_46{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_463518c6.png)}.icon_smiley_47{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_473518c6.png)}.icon_smiley_48{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_483518c6.png)}.icon_smiley_49{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_493518c6.png)}.icon_smiley_50{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_503518c6.png)}.icon_smiley_51{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_513518c6.png)}.icon_smiley_52{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_523518c6.png)}.icon_smiley_54{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_543518c6.png)}.icon_smiley_55{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_553518c6.png)}.icon_smiley_56{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_563518c6.png)}.icon_smiley_57{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_573518c6.png)}.icon_smiley_60{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_603518c6.png)}.icon_smiley_62{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_623518c6.png)}.icon_smiley_63{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_633518c6.png)}.icon_smiley_64{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_643518c6.png)}.icon_smiley_65{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_653518c6.png)}.icon_smiley_66{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_663518c6.png)}.icon_smiley_67{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_673518c6.png)}.icon_smiley_68{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_683518c6.png)}.icon_smiley_70{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_703518c6.png)}.icon_smiley_74{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_743518c6.png)}.icon_smiley_75{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_753518c6.png)}.icon_smiley_76{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_763518c6.png)}.icon_smiley_78{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_783518c6.png)}.icon_smiley_79{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_793518c6.png)}.icon_smiley_80{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_803518c6.png)}.icon_smiley_81{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_813518c6.png)}.icon_smiley_82{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_823518c6.png)}.icon_smiley_83{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_833518c6.png)}.icon_smiley_84{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_843518c6.png)}.icon_smiley_85{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_853518c6.png)}.icon_smiley_89{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_893518c6.png)}.icon_smiley_92{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_923518c6.png)}.icon_smiley_93{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_933518c6.png)}.icon_smiley_94{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_943518c6.png)}.icon_smiley_95{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/smiley/smiley_953518c6.png)}.icon_emoji_ios_0{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6043518c6.png)}.icon_emoji_ios_1{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6373518c6.png)}.icon_emoji_ios_2{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6023518c6.png)}.icon_emoji_ios_3{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F61D3518c6.png)}.icon_emoji_ios_4{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6333518c6.png)}.icon_emoji_ios_5{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6313518c6.png)}.icon_emoji_ios_6{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6143518c6.png)}.icon_emoji_ios_7{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F6123518c6.png)}.icon_emoji_wx_4{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_043518c6.png)}.icon_emoji_wx_5{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_053518c6.png)}.icon_emoji_wx_2{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_023518c6.png)}.icon_emoji_wx_6{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_063518c6.png)}.icon_emoji_wx_12{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_123518c6.png)}.icon_emoji_wx_11{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_113518c6.png)}.icon_emoji_ios_8{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F47B3518c6.png)}.icon_emoji_ios_9{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F64F.03518c6.png)}.icon_emoji_ios_10{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F4AA.03518c6.png)}.icon_emoji_ios_11{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F3893518c6.png)}.icon_emoji_ios_12{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_ios/u1F3813518c6.png)}.icon_emoji_wx_9{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_093518c6.png)}.icon_emoji_wx_14{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/emotion_panel/emoji_wx/2_143518c6.png)}.wx_poptips{position:fixed;z-index:3;width:120px;min-height:120px;top:180px;left:50%;margin-left:-60px;background:rgba(40,40,40,0.5)!important;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#80282828',endcolorstr = '#80282828');text-align:center;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;color:#fff}.wx_poptips .icon_toast{width:53px;margin:15px 0 0}.wx_poptips .toast_content{margin:0 0 15px}.discuss_container .rich_media_title{font-size:18px}.discuss_container.disabled .btn_discuss{color:#60f05f}.discuss_container.access .discuss_container_inner{padding:15px 15px 0}.discuss_container.editing .discuss_container_inner{padding-bottom:25px}.discuss_container.editing .frm_textarea_box_wrp{margin:0 -15px}.discuss_container.editing .frm_textarea{height:78px;-webkit-overflow-scrolling:touch}.discuss_container.editing .frm_append.counter{display:block}.discuss_container.editing .discuss_btn_wrp{display:block}.discuss_container.editing .discuss_icon_tips{margin-top:0;margin-bottom:-14px}.discuss_container.editing .discuss_title_line{margin-bottom:-20px}.discuss_container.warning .counter{color:#e15f63}.frm_textarea{width:100%;background-color:transparent;border:0;display:block;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;height:37px;padding:10px 15px;resize:none;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.frm_textarea_box_wrp{position:relative}.frm_textarea_box_wrp:before{content:" ";position:absolute;left:0;top:0;width:100%;height:1px;border-top:1px solid #e7e6e4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5);top:-1px}.frm_textarea_box_wrp:after{content:" ";position:absolute;left:0;top:0;width:100%;height:1px;border-top:1px solid #e7e6e4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5);top:auto;bottom:-2px}.frm_textarea_box{display:block;background-color:#fff}.frm_append.counter{display:none;position:absolute;right:8px;bottom:8px;color:#a3a3a3;font-weight:400;font-style:normal;font-size:12px}.frm_append .current_num.warn{color:#f43631}.discuss_btn_wrp{display:none;margin-top:20px;margin-bottom:20px;text-align:right}.btn_discuss{padding-left:1.5em;padding-right:1.5em}.discuss_list{margin-top:-5px;padding-bottom:20px;font-size:16px;list-style:none}.discuss_item{position:relative;padding-left:45px;margin-top:26px;*zoom:1}.discuss_item:after{content:"\200B";display:block;height:0;clear:both}.discuss_item .user_info{min-height:20px;overflow:hidden}.discuss_item .nickname{display:inline-block;vertical-align:middle;font-weight:400;font-style:normal;color:#727272;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;max-width:9em}.discuss_item .avatar{position:absolute;top:0;left:0;top:3px;width:35px;height:35px;background-color:#ccc;vertical-align:top;margin-top:0;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}.discuss_item .discuss_message{word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden;color:#3e3e3e;line-height:1.5}.discuss_item .discuss_message_content{white-space:pre-wrap}.discuss_item .discuss_extra_info{color:#bdbdbd;font-size:13px}.discuss_item .discuss_extra_info a{margin-left:.5em}.discuss_item .discuss_status{color:#ff7a21;white-space:nowrap}.discuss_item .discuss_status i{font-style:normal;margin-right:2px}.discuss_item .discuss_opr{float:right}.discuss_item .discuss_opr .meta_praise{display:inline-block;text-align:right;padding-top:5px;margin-top:-5px}.discuss_item .discuss_opr .praise_num{-webkit-user-select:none;user-select:none}.discuss_item .discuss_del{margin-left:.5em}.discuss_icon_tips{margin-bottom:20px}.discuss_icon_tips img{vertical-align:middle;margin-right:3px;margin-top:-4px}.discuss_icon_tips .icon_edit{width:12px}.discuss_icon_tips .icon_access{width:13px}.reply_result{position:relative;margin-top:.5em;padding-top:.5em;padding-left:.4em}.reply_result:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #dadada;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.reply_result .discuss_message{clear:both}.reply_result .nickname{position:relative;overflow:visible}.reply_result .nickname:before{content:" ";position:absolute;left:-0.4em;top:50%;margin-top:-7px;width:3px;height:14px;background-color:#02bb00}.rich_tips.discuss_title_line{margin-top:50px}.icon_discuss_top{display:inline-block;vertical-align:middle;padding:1px .5em;border:1px solid #bdbdbd;color:#bdbdbd;border-top-left-radius:.7em 50%;-moz-border-radius-topleft:.7em 50%;-webkit-border-top-left-radius:.7em 50%;border-top-right-radius:.7em 50%;-moz-border-radius-topright:.7em 50%;-webkit-border-top-right-radius:.7em 50%;border-bottom-left-radius:.7em 50%;-moz-border-radius-bottomleft:.7em 50%;-webkit-border-bottom-left-radius:.7em 50%;border-bottom-right-radius:.7em 50%;-moz-border-radius-bottomright:.7em 50%;-webkit-border-bottom-right-radius:.7em 50%;font-size:12px;line-height:1;margin-top:-1px;margin-left:.5em}@media screen and (device-aspect-ratio:2/3),screen and (device-aspect-ratio:40/71){.icon_discuss_top{font-size:11px;line-height:1.1;padding-top:0}}.reward_area{padding:38px 0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto}.reward_inner{position:relative}.reward_area_inner{margin:0 auto;position:relative;left:3px}.reward-avatar{display:inline-block;width:50px;height:50px;margin:0 auto;border-radius:50%;overflow:hidden}.reward-avatar img{width:100%;height:100%!important;object-fit:cover}.reward-author{font-size:16px;color:#000;text-align:center;margin-top:10px;line-height:1}.reward_access{display:inline-block;padding:0 1.6em;line-height:2;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;font-size:16px;background-color:#dc5d4a;color:#fff;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reward_access:active{background-color:#be5041;color:#e69990}.icon-reward{display:none;width:17px;height:18px;vertical-align:-2px;background-image:url("data:image/svg+xml,%3Csvg width='19' height='20' viewBox='0 0 19 20' xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle%3Eicon reward%3C/title%3E%3Cdesc%3Ewechat reward.%3C/desc%3E%3Cg fill='none'%3E%3Cpath d='M14.313 7.261l-.032-.004c-.462-.066-.712-.364-.824-.711-.042-.13-.06-.253-.068-.398-.009-.151-.008-.235.001-.645.022-.999-.015-1.624-.194-2.298l-.121-.386-.035-.118c-.044-.196-.184-.549-.437-.895-.44-.602-1.044-.918-1.951-.846-.963.076-1.397.848-1.406 2.11v.009c-.006.908-.022 1.375-.093 1.972-.169 1.421-.593 2.49-1.473 3.132-.617.45-1.61.688-2.962.826-.984.101-1.996.129-2.824.12l-.072-.001c-.153 0-.759.697-.759.95l-.11 7.776c-.044.569.331.917.869.917h10.741c1.054 0 1.88-.147 2.786-.693.52-.314.988-.738 1.396-1.294 1.321-1.803 1.5-3.456 1.085-7.244-.107-.982-1.029-1.976-2.161-2.132l-1.357-.145z' stroke='%23FAFAFA' stroke-width='1.9'/%3E%3Cpath d='M9.241 15.058l-.184.044c-.153 0-.286-.084-.356-.208l-.027-.058-1.994-2.273-.02-.085c-.065-.243.221-.556.463-.476l.122.04 1.496.998c.096.063.211.099.334.099l.209-.037 4.601-3.524c.543-.148.661.002.426.529l-5.027 4.926-.045.026z' fill='%23FAFAFA'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;-webkit-background-size:contain;background-size:contain;margin-right:.5em}.reward_button{display:inline-block;margin-top:30px;padding:0 1.6em;line-height:2.2;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;font-size:16px;border:1px solid currentColor;color:#fd6143;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reward_button:active{color:#f46f56}.reward_button:before{content:" ";width:17px;height:17px;display:inline-block;background:transparent url('') 0 0 no-repeat;background-size:17px 17px;vertical-align:-3px;margin-right:4px}.reward_tips{margin-bottom:5px}.reward_user_tips{margin-top:2em}.reward_user_list{padding-top:.5em;overflow:hidden}.reward_user_avatar{display:inline-block;vertical-align:top;width:28px;height:28px;margin:0 6px 6px 0}.reward_user_avatar img{width:100%;height:100%!important}.reward_user_avatar.readmore{-webkit-tap-highlight-color:rgba(0,0,0,0)}.reward_qrcode_area{margin:38px 0 20px;padding:30px 20px;font-size:14px;border:1px solid #ebebeb}.reward_qrcode_area p{word-wrap:break-word;word-break:break-all}.reward_qrcode_area .tips_global{font-size:13px}.reward_qrcode_area .reward_money{font-size:30px;margin-top:.6em;margin-bottom:-0.1em;line-height:1;font-family:"WeChatNumber-151125"}.reward_qrcode_area .reward_tips{margin-top:1em;margin-bottom:0}.reward_qrcode_img_wrp{width:200px;height:200px;background-color:#fff;display:block;margin:1.5em auto 1.6em}.reward_qrcode_img{width:100%;height:100%;display:block}@font-face{font-weight:normal;font-style:normal;font-family:"WeChatNumber-151125";src:url('https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/assets/WeChatNumber-170206.ttf') format('truetype')}@media(min-device-width:414px){.reward_qrcode_area .tips_global{line-height:1.8}.reward_qrcode_area .reward_money{margin-top:.6em}.reward_qrcode_area .reward_tips{margin-top:1.2em}.reward_qrcode_img_wrp{width:224px;height:224px;margin:1.8em auto}.reward_access{line-height:44px;font-size:17px}.icon-reward{width:19px;height:20px;vertical-align:-3px}}.reward_area_primary .reward-avatar{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.reward_area_primary .reward-author{margin-top:15px;font-size:17px}.rich_media_extra{position:relative}.rich_media_extra .extra_link{display:block}.rich_media_extra img{vertical-align:middle;margin-top:-3px}.rich_media_extra .appmsg_banner{width:100%}.rich_media_extra .ad_msg_mask{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;line-height:200px;background-color:#000;filter:alpha(opacity = 20);-moz-opacity:.2;-khtml-opacity:.2;opacity:.2}.btn_default.btn_line,.btn_primary.btn_line{background-color:#fff;color:#04be02;border:1px solid #04be02;font-size:15px}.rich_media_extra .extra_link{position:relative}.promotion_tag{background-color:rgba(0,0,0,0.51);position:absolute;display:block;height:20px;line-height:20px;font-size:14px;font-style:normal;color:#fff;padding-right:6px;text-align:right;right:0;bottom:0}.promotion_tag:before{content:'';width:14px;height:20px;position:absolute;top:0;right:100%;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/promotion_tag_bg_primary2c7543.png) no-repeat 0 0;-webkit-background-size:79px 20px;background-size:79px 20px;overflow:hidden}.brand_logo{position:absolute;display:block;width:24%;right:1.54%;top:0}.brand_logo img{width:100%;vertical-align:top;max-height:35px}.top_banner{background-color:#fff}.top_banner .rich_media_extra{padding:15px 15px 20px 15px}.top_banner .rich_media_extra .extra_link{position:relative;padding-bottom:10px}.top_banner .rich_media_extra .extra_link:before{content:" ";position:absolute;left:0;top:0;width:100%;height:1px;border-top:1px solid #d6d6d6;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5);top:auto;bottom:-2px}.top_banner .rich_media_extra .extra_link:active,.top_banner .rich_media_extra .extra_link:focus{outline:0;border:0}.top_banner .rich_media_extra .appmsg_banner{width:100%;vertical-align:top;outline:0}.top_banner .rich_media_extra .appmsg_banner:active,.top_banner .rich_media_extra .appmsg_banner:focus{outline:0;border:0}.top_banner .rich_media_extra .promotion_tag{height:19px;line-height:19px;width:69px;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/promotion_tag_bg_small24a2fe.png) no-repeat 0 0;font-size:12px;-webkit-background-size:69px 19px;background-size:69px 19px;bottom:10px;padding-left:6px}.top_banner .rich_media_extra .brand_logo{width:20%;right:2.22%}.top_banner .rich_media_extra .brand_logo img{max-height:35px}.top_banner .rich_media_extra .ad_msg_mask{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;line-height:200px;background-color:#000;filter:alpha(opacity = 20);-moz-opacity:.2;-khtml-opacity:.2;opacity:.2}.top_banner .rich_media_extra .ad_msg_mask img{position:absolute;width:16px;top:50%;margin-top:-8px;left:50%;margin-left:-8px}.top_banner .preview_group.obvious_app{min-height:54px;position:relative}.top_banner .preview_group.obvious_app .pic_app{width:66.6%}.top_banner .preview_group.obvious_app .pic_app img{height:100%;min-height:54px}.top_banner .preview_group.obvious_app .info_app{width:33%;left:68%}.top_banner .preview_group.obvious_app .info_app .name_app{line-height:18px;font-size:13px}.top_banner .preview_group.obvious_app .info_app .profile_app{font-size:10px}.top_banner .preview_group.obvious_app .info_app .dm_app{bottom:5px}.top_banner .preview_group.obvious_app .info_app .dm_app .ad_btn{font-size:12px;padding-left:17px;line-height:16px}.top_banner .preview_group.obvious_app .info_app .dm_app .ad_btn.btn_download,.top_banner .preview_group.obvious_app .info_app .dm_app .ad_btn.btn_install,.top_banner .preview_group.obvious_app .info_app .dm_app .ad_btn.btn_installed,.top_banner .preview_group.obvious_app .info_app .dm_app .ad_btn.btn_open{-webkit-background-size:14px 14px;background-size:14px 14px;background-position:0 center;-webkit-background-position:0 center}.top_banner .preview_group.obvious_app .info_app .dm_app .extra_info{display:none}.appmsg_card_btn.with_processor .btn_processor{background-color:#576b95}.da_btn_more.with_processor .btn_processor{background-color:#576b95}.with_processor{position:relative;overflow:hidden}.with_processor .btn_processor{display:block;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#04be02}.with_processor .btn_processor_value{position:relative}.wrp_preview_group{padding-top:100px}.preview_group{position:relative;min-height:83px;background-color:#fff;border:1px solid #e7e7eb;-webkit-text-size-adjust:none;text-size-adjust:none}.preview_group.fixed_pos{position:fixed;bottom:0;left:0;right:0}.preview_group .preview_group_inner{padding:14px}.preview_group .preview_group_inner .preview_group_info{padding-left:68px;color:#8d8d8d;font-size:14px}.preview_group .preview_group_inner .preview_group_info .preview_group_title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;color:#000;font-weight:400;font-style:normal;padding-right:73px;max-width:142px;display:block}.preview_group .preview_group_inner .preview_group_info .preview_group_desc{padding-right:65px;display:inline-block;line-height:20px}.preview_group .preview_group_inner .preview_group_info .preview_group_avatar{position:absolute;width:55px;height:55px;left:13px;top:50%;margin-top:-27px;z-index:1}.preview_group .preview_group_inner .preview_group_info .preview_group_avatar.br_radius{border-radius:100%;-moz-border-radius:100%;-webkit-border-radius:100%}.preview_group .preview_group_inner .preview_group_opr{position:absolute;line-height:83px;top:0;right:13px}.preview_group .preview_group_inner .preview_group_opr .btn{padding:0;min-width:60px;min-height:30px;height:auto;line-height:30px;text-align:center}.preview_group.preview_card .card_inner{padding:0;min-height:89px}.preview_group.preview_card .card_inner .preview_card_avatar{position:absolute;width:89px;height:89px!important;margin:0;left:0;top:0}.preview_group.preview_card .card_inner .preview_group_info{padding:10px 12px 0 106px}.preview_group.preview_card .card_inner .preview_group_info .preview_group_title2{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;padding-right:0;display:block;color:#3e3e3e;font-weight:400}.preview_group.preview_card .card_inner .preview_group_info .preview_group_desc{padding-right:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.3}.preview_group.preview_card .card_inner .preview_group_info.append_btn .preview_group_desc,.preview_group.preview_card .card_inner .preview_group_info.append_btn .preview_group_title{padding-right:68px;width:auto}.preview_group.preview_shop_card .shop_card_inner{padding:0;min-height:96px}.preview_group.preview_shop_card .preview_card_avatar{position:absolute;width:96px;height:96px!important;margin:0;left:0;top:0}.preview_group.preview_shop_card .preview_group_info{padding:10px 12px 0 111px}.preview_group.preview_shop_card .preview_shop_card_title{display:block;color:#3e3e3e;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.3;font-size:15px}.preview_group.preview_shop_card .preview_shop_card_desc{color:#8c8c8c;position:absolute;bottom:6px;left:111px;right:12px}.preview_group.preview_shop_card .preview_shop_card_price{font-size:16px;color:#3e3e3e}.preview_group.preview_shop_card .preview_shop_card_oldprice{text-decoration:line-through;color:#8c8c8c;font-size:13px;margin-bottom:-0.5em}.preview_group.preview_shop_card .preview_shop_card_price,.preview_group.preview_shop_card .preview_shop_card_oldprice{display:block}.preview_group.preview_shop_card .preview_shop_card_btn_buy{float:right;line-height:1.75;font-size:16px;padding:0 .8em;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;margin-top:1px}.preview_group.obvious_app{width:100%}.preview_group.obvious_app .preview_group_inner{padding:0}.preview_group.obvious_app .pic_app{width:58.3%;height:100%;display:inline-block;margin-right:2%;vertical-align:top}.preview_group.obvious_app .pic_app img{width:100%;vertical-align:top;margin-top:0}.preview_group.obvious_app .info_app{display:inline-block;width:38%;color:#8a8a8a;font-size:12px;box-sizing:border-box;-webkit-box-sizing:border-box;position:absolute;left:62%;top:0;height:100%}.preview_group.obvious_app .info_app .name_app{color:#000;font-size:15px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;margin-top:3px}.preview_group.obvious_app .info_app .profile_app{line-height:10px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.preview_group.obvious_app .info_app .profile_app span{padding:0 5px}.preview_group.obvious_app .info_app .profile_app span:first-child{padding-left:0}.preview_group.obvious_app .info_app .profile_app em{font-size:9px;line-height:16px;font-weight:400;font-style:normal;color:#dfdfdf}.preview_group.obvious_app .info_app .dm_app{line-height:20px;vertical-align:middle;position:absolute;left:0;bottom:5px}.preview_group.obvious_app .info_app .dm_app .ad_btn{display:block;color:#04be02;font-size:15px;padding-left:22px}.preview_group.obvious_app .info_app .dm_app .ad_btn.btn_download{background:transparent url(http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/icon58_download@3x.png) no-repeat 0 0;-webkit-background-size:19px 19px;background-size:16px 16px;-webkit-background-position:0 center;background-position:0 center}.preview_group.obvious_app .info_app .dm_app .ad_btn.btn_install{background:transparent url(http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/icon58_install@3x.png) no-repeat 0 0;-webkit-background-size:19px 19px;background-size:16px 16px;-webkit-background-position:0 center;background-position:0 center}.preview_group.obvious_app .info_app .dm_app .ad_btn.btn_installed{background:transparent url(http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/icon58_installed@3x.png) no-repeat 0 0;-webkit-background-size:19px 19px;background-size:16px 16px;color:#8a8a8a;-webkit-background-position:0 center;background-position:0 center}.preview_group.obvious_app .info_app .dm_app .ad_btn.btn_open{background:transparent url(http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/ad/icon58_open@3x.png) no-repeat 0 0;-webkit-background-size:19px 19px;background-size:16px 16px;-webkit-background-position:0 center;background-position:0 center}.preview_group.obvious_app .info_app .dm_app p{line-height:15px}.preview_group.obvious_app .info_app .dm_app .extra_info{font-size:9px}.preview_group.obvious_app .info_app .grade_app{height:11px;line-height:11px;font-size:12px;color:#888}.preview_group.obvious_app .info_app .grade_app .stars{display:inline-block;width:55px;height:11px;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/star_sprite25624b.png) no-repeat 0 0;-webkit-background-size:55px 110px;background-size:55px 110px}.preview_group.obvious_app .info_app .grade_app .stars.star_half{backgroud-position:0}.preview_group.obvious_app .info_app .grade_app .stars.star_one{background-position:0 -11px}.preview_group.obvious_app .info_app .grade_app .stars.star_one_half{background-position:0 -22px}.preview_group.obvious_app .info_app .grade_app .stars.star_two{background-position:0 -33px}.preview_group.obvious_app .info_app .grade_app .stars.star_two_half{background-position:0 -44px}.preview_group.obvious_app .info_app .grade_app .stars.star_three{background-position:0 -55px}.preview_group.obvious_app .info_app .grade_app .stars.star_three_half{background-position:0 -66px}.preview_group.obvious_app .info_app .grade_app .stars.star_four{background-position:0 -77px}.preview_group.obvious_app .info_app .grade_app .stars.star_four_half{background-position:0 -88px}.preview_group.obvious_app .info_app .grade_app .stars.star_five{background-position:0 -99px}.preview_group.download_app_with_desc{border:0;color:#fff;font-weight:400}.preview_group.download_app_with_desc .preview_group_inner{position:relative;background-repeat:no-repeat;background-position:center;background-size:cover;height:100%;width:100%;box-sizing:border-box;padding:0;overflow:hidden}.preview_group.download_app_with_desc .preview_group_hd{position:relative;z-index:9;width:24%;text-align:center;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-pack:center;-webkit-box-align:center;display:box;box-orient:horizontal;box-pack:center;box-align:center;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;height:100%;float:right;margin-right:2.875%}.preview_group.download_app_with_desc .preview_group_hd .preview_card_avatar{width:45%;height:45%!important;margin:0;border-radius:18%}.preview_group.download_app_with_desc .preview_group_hd .preview_group_title{display:block;font-weight:400;font-size:12px;padding-top:4%;padding-bottom:8%;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.preview_group.download_app_with_desc .preview_group_hd .preview_group_btn{display:block;margin:0 auto;font-size:14px;padding:6.5% 0;line-height:1;width:72%;text-align:center;border:1px solid #fff;border-radius:5px;color:#fff;-webkit-tap-highlight-color:transparent}.preview_group.download_app_with_desc .preview_group_hd_inner{-webkit-box-flex:1;-webkit-flex:1;flex:1}.preview_group.download_app_with_img .preview_card_avatar{box-shadow:0 -1px 2px rgba(0,0,0,0.2)}.preview_group.download_app_with_desc{overflow:hidden}.preview_group.download_app_with_desc .preview_group_bg{width:100%;height:100%;position:absolute;background-repeat:no-repeat;background-position:center;background-size:cover;z-index:0;-webkit-filter:blur(30px);-moz-filter:blur(30px);-o-filter:blur(30px);-ms-filter:blur(30px);filter:blur(30px)}.preview_group.download_app_with_desc .preview_group_bd{position:absolute;left:2.875%;right:26%;top:46%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);text-align:center}.preview_group.download_app_with_desc .preview_group_ft{position:absolute;left:2.875%;right:26%;bottom:26%;transform:translateY(50%);-webkit-transform:translateY(50%);-moz-transform:translateY(50%);-ms-transform:translateY(50%);text-align:center}.preview_group.download_app_with_desc .preview_group_desc{display:block;font-size:17px;line-height:1.5;width:12em;margin:0 auto;overflow-x:hidden;white-space:nowrap}.preview_group.download_app_with_desc .preview_group_download_info{display:inline-block;font-size:9px}.preview_group.follow .preview_group_inner .preview_group_info .preview_group_desc{display:block}.preview_group.follow.with_tips .preview_group_desc{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.preview_group.follow .weak_tips{color:#bbb}.btn_plain_primary{color:#04be02;border:1px solid #04be02}.btn_plain_primary:active{border-color:#039702}.mpda_card .btn{padding:0;font-size:15px}.mpda_card .btn_inline{width:4em;line-height:2}.mpda_card .cardticket_hd{background-color:#fff;border-top-left-radius:5px;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-right-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border:1px solid #ececec;border-bottom-width:0}.mpda_card .cardticket_hd .radius_avatar{width:45px;height:45px}.mpda_card .cardticket_hd .cell_hd{padding-left:12px}.mpda_card .cardticket_hd .cell_bd{font-size:17px;padding-left:.5em}.mpda_card .cardticket_hd .cell_ft{padding-right:10px}.mpda_card .cardticket_ft{position:relative;margin-top:10px;padding:.35em 12px;font-size:12px;background-color:#fff;border-bottom-left-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border:1px solid #ececec;border-top-width:0}.mpda_card .cardticket_theme{position:absolute;top:-10px;left:8px;right:8px;height:10px;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/cardticket_theme/pic_circle290773.png) no-repeat 0 0;background-repeat:repeat-x;-webkit-background-size:10px auto;background-size:10px auto}.mpda_card .cardticket_theme:before{content:" ";position:absolute;left:-8px;top:0;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/cardticket_theme/pic_circle_left290773.png) no-repeat 0 0;width:8px;height:10px;vertical-align:middle;display:inline-block;-webkit-background-size:8px auto;background-size:8px auto}.mpda_card .cardticket_theme:after{content:" ";position:absolute;right:-8px;top:0;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/cardticket_theme/pic_circle_right290773.png) no-repeat 0 0;width:8px;height:10px;vertical-align:middle;display:inline-block;-webkit-background-size:8px auto;background-size:8px auto}@media(max-width:354px){.preview_group.download_app_with_desc .preview_group_bd{top:45%}.preview_group.download_app_with_desc .preview_group_desc{font-size:16px;line-height:1.4}.preview_group.download_app_with_desc .preview_group_hd .preview_group_title{padding-top:3%;padding-bottom:6%}.preview_group.download_app_with_desc .preview_group_hd .preview_group_btn{font-size:13px}}@media(min-width:400px){.preview_group.download_app_with_desc .preview_group_bd{top:45%}.preview_group.download_app_with_desc .preview_group_desc{font-size:18px}}.wx_flex_layout{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.wx_flex_bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;word-wrap:break-word;word-break:break-all}.wx_flex_ft{text-align:center}.mod_follow_with_img .wx_flex_ft{width:32%}.mod_follow_with_img .fwi_thumb{margin:0;display:block;width:100%}.mod_follow_with_img .radius_avatar{width:35px;height:35px;padding:0}.mod_follow_with_img .radius_avatar img{margin:0}.mod_follow_with_img .fwi_nickname{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;display:block;margin:.2em 1em .5em;font-weight:400;font-size:12px;color:#8c8c8c}.mod_method117 .wx_flex_ft{width:30.435%}.mod_method117 .fwi_thumb{margin:0;display:block;width:100%}.mod_method117 .radius_avatar{width:35px;height:35px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;padding:0}.mod_method117 .radius_avatar img{margin:0;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px}.mod_method117 .fwi_nickname{width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;display:block;margin:.3em 1em .5em;font-weight:400;font-size:12px;color:#8c8c8c}.wx_min_plain_btn{display:inline-block;vertical-align:middle;padding:0 .85em;line-height:1.6em;font-size:15px;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px}.wx_min_plain_btn.primary{color:#1aad19;border:1px solid #1aad19}.wx_min_plain_btn.primary:active{color:rgba(26,173,25,0.6);border-color:rgba(26,173,25,0.6)}.wx_min_plain_btn.ba_btn{color:#576b95;border:1px solid #576b95}.wx_min_plain_btn.ba_btn:active{color:#576b95;border-color:#576b95}.btn_progress{position:relative;overflow:hidden}.btn_progress.primary:active{color:#1aad19;border-color:#1aad19}.btn_progress.ba_btn{color:#576b95;border:1px solid #576b95}.btn_progress.ba_btn .btn_progress_bd{width:57px;position:absolute;top:0;left:0;color:#fff;background-color:#576b95;text-align:center;display:block;height:100%;max-width:initial!important}.btn_progress_inner{position:absolute;left:0;top:0;bottom:0;overflow:hidden;-webkit-transition:width 1s;transition:width 1s}.with_processor .btn_progress_inner{right:0;height:100%}.with_processor .btn_progress_bd{height:100%}.btn_progress_bd{position:absolute;top:0;left:0;color:#fff;background-color:#1aad19;text-align:center}.icon26_weapp_white{display:inline-block;width:14px;height:14px;background-image:url();background-size:cover;background-repeat:no-repeat;vertical-align:middle;margin-right:-2px}.da_area{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fcfcfc;border:1px solid #ebebeb;-webkit-user-select:none;user-select:none;font-size:17px}.da_area .da_inner{position:relative;width:100%;transition:opacity .6s;-webkit-transition:opacity .6s}.da_area .da_bd{padding:8.5px 10px;width:100%;position:relative;border-top:1px solid #ebebeb;box-sizing:border-box;white-space:nowrap;display:flex;justify-content:space-between;align-items:center}.icon26_weapp_blue{display:inline-block;width:12.5px;height:12.5px;background-image:url();background-size:cover;background-repeat:no-repeat;vertical-align:middle;margin-right:4px;position:relative;top:-0.5px}span.img_bg_cover{background-repeat:no-repeat;background-position:center center;background-size:cover}.ct_mpda_wrp{margin:38px 0 20px}.ct_mpda_area{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fcfcfc;border:1px solid #ebebeb;-webkit-user-select:none;user-select:none}.ct_mpda_placeholder{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:100%}.ct_mpda_tips{color:#d8d8d8;text-align:center;font-size:15px}.ct_mpda_inner{position:relative;width:100%;opacity:0;transition:opacity .6s;-webkit-transition:opacity .6s}.ct_mpda_area.show .ct_mpda_inner{opacity:1}.ct_mpda_main_img{width:100%;min-height:100px;display:block}.ct_mpda_hd .page_video{min-height:0}.ct_mpda_bd{width:100%;position:relative;border-top:1px solid #ebebeb;box-sizing:border-box;white-space:nowrap}.ct_mpda_logo{width:35px;height:35px;display:inline-block;margin:15px 10px;vertical-align:middle;border-radius:50%;overflow:hidden}.ct_mpda_desc_box{font-size:0;display:inline-block;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;margin-left:-60px;padding-left:55px;padding-right:80px;box-sizing:border-box;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ct_mpda_btn_more{position:absolute;right:10px;top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);display:inline-block;color:#576b95;font-size:13px;border:1px solid #576b95;border-radius:3px;line-height:2.2;padding:0 .75em}.ct_mpda_btn_more:active{border-color:#354567;color:#354567;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ct_mpda_title{font-size:14px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ct_mpda_details{display:inline-block;vertical-align:top;font-size:12px;color:#878787;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ct_mpda_details:after{content:'';display:inline-block;width:4px;height:4px;border-width:0 1px 1px 0;border-style:solid;border-color:#878787;-webkit-transform:rotate(45deg) translateY(-3px);transform:rotate(45deg) translateY(-4px);margin-left:3px}.ct_mpda_btn_about{display:none;font-size:13px;line-height:2.8;padding:0 1em;background:#fff;color:#576b95;border:1px solid #dfdfdf;box-shadow:0 1px 3px 0 rgba(0,0,0,0.1);border-radius:3px;position:absolute;bottom:-28px;left:55px;z-index:9;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ct_mpda_btn_about:active{background-color:#ececec}.db{display:block}.qqmusic_area{display:block;margin:17px 1px 16px 0;font-weight:400;text-decoration:none;font-size:0;line-height:0;text-align:left;-ms-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}.qqmusic_area .unsupport_tips{display:none;padding:20px 20px 8px;line-height:1.6;font-size:16px}.qqmusic_area .pic_qqmusic_default{position:absolute;top:50%;left:50%;margin-top:-18.5px;margin-left:-18.5px;width:37px;height:37px;display:none}.qqmusic_area.unsupport .unsupport_tips{display:block}.qqmusic_area.unsupport .pic_qqmusic_default{display:inline-block}.qqmusic_area.unsupport .icon_qqmusic_switch{display:none}.qqmusic_wrp{border:1px solid #ebebeb;line-height:1.6}.qqmusic_bd{position:relative;background-color:#fcfcfc;overflow:hidden}.qqmusic_ft{text-align:right;background-color:#f5f5f5;border-top:1px solid #ebebeb;line-height:2.5;overflow:hidden;font-size:11px;padding:0 .5em}.play_area{float:left;width:60px;height:60px;margin-right:12px;position:relative}.qqmusic_thumb{display:block;width:60px;height:60px!important}.access_area{display:block;color:#8c8c8c;min-height:60px;overflow:hidden;margin-right:10px;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.qqmusic_songname,.qqmusic_singername{display:block;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.qqmusic_songname{padding:7px 0 3px;margin-bottom:-4px;font-size:16px;color:#3e3e3e}.qqmusic_singername{font-size:14px;margin-right:20px}.qqmusic_source{position:absolute;right:6px;bottom:6px}.qqmusic_source img{width:13px;height:13px;vertical-align:top;border:0}.qqmusic_love{position:relative;float:right;margin:10px 0 0 10px;height:54px;color:#607fa6;width:53px;text-align:center;font-size:13px;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_play_sprite.2x26f1f1.png) no-repeat 0 0}.qqmusic_love:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #e7e6e4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(0.5);transform:scaleX(0.5)}.qqmusic_love .icon_love{margin-top:16px}.qqmusic_love .love_num{display:block}.icon_qqmusic_switch{position:absolute;top:50%;left:50%;margin-top:-18.5px;margin-left:-18.5px;line-height:200px;overflow:hidden;cursor:pointer;width:37px;height:37px;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0;background:transparent url() no-repeat 0 0;-webkit-background-size:37px auto;background-size:37px auto}.qqmusic_playing .icon_qqmusic_switch{background-position:0 -74px}.qqmusic_playing_pause .icon_qqmusic_switch{background-position:0 -37px}.icon_love{width:12px;height:12px;vertical-align:middle;display:inline-block;margin-top:-0.2em;background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_love_mini_sprite.2x25ded2.png) no-repeat 0 0;-webkit-background-size:12px auto;background-size:12px auto}.loved .icon_love{background-image:url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_love_mini_sprite.2x25ded2.png);background-position:0 -17px}.db{display:block}.icon_share_audio_switch{background:transparent url() no-repeat 0 0;width:42px;height:42px;vertical-align:middle;display:inline-block;-webkit-background-size:42px auto;background-size:42px auto;overflow:hidden;color:transparent}.icon_share_audio_switch:before{content:"播放语音"}.icon_share_audio_switch_accessibility{position:absolute;width:20px;height:20px;left:-9999em}.icon_share_audio_switch_accessibility:before{content:"停止播放"}.share_audio_playing .icon_share_audio_switch{background-image:url()}.share_audio_playing .icon_share_audio_switch:before{content:"停止播放"}.share_audio_playing .icon_share_audio_switch_accessibility:before{content:"停止播放"}.share_audio_context{background-color:#fcfcfc;padding:14px 15px 6px;font-size:16px;position:relative;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.share_audio_context:before{content:" ";position:absolute;top:0;left:0;border:1px solid #e0e0e0;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;width:200%;height:200%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-transform:scale(0.5);transform:scale(0.5);-webkit-transform-origin:0 0;transform-origin:0 0}.share_audio_switch{margin:-10px 15px 0 0;position:relative;z-index:1}.share_audio_info{position:relative;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.share_audio_title{display:block;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;min-height:1.6em;word-wrap:break-word}.share_audio_tips{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;padding-bottom:6px;font-size:12px;color:#8c8c8c}.share_audio_progress_wrp{height:2px;margin-right:7px;position:relative;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.share_audio_progress{height:100%;background-color:#ebebeb;position:relative;width:100%;padding-left:7px;-webkit-box-sizing:initial!important;box-sizing:initial!important}.share_audio_progress_inner{background-color:#09bb07;height:100%;position:absolute;top:0;left:0;z-index:1}.share_audio_progress_buffer{position:absolute;top:0;left:0;bottom:0;background-color:#d9d9d9}@-webkit-keyframes slidein{from{-webkit-transform:translateX(-50%);transform:translateX(-50%)}to{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slidein{from{-webkit-transform:translateX(-50%);transform:translateX(-50%)}to{-webkit-transform:translateX(0);transform:translateX(0)}}.share_audio_progress_loading{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;display:none}.share_audio_progress_loading .share_audio_progress_loading_inner{position:absolute;top:0;bottom:0;left:0;-webkit-animation:slidein 6s linear infinite normal;animation:slidein 6s linear infinite normal;width:200%;max-width:none!important;background-image:-webkit-repeating-linear-gradient(-15deg,#d9d9d9,#d9d9d9 2px,#ebebeb 2px,#ebebeb 4px);background-image:repeating-linear-gradient(-15deg,#d9d9d9,#d9d9d9 2px,#ebebeb 2px,#ebebeb 4px)}.share_audio_progress_handle{z-index:2;position:absolute;width:14px;height:14px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;background-color:rgba(9,187,7,0.15);top:50%;margin-top:-7px;margin-left:-3.5px;cursor:pointer;outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.share_audio_progress_handle:before{content:" ";width:8px;height:8px;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;background-color:#09bb07;position:absolute;left:50%;top:50%;margin-top:-4px;margin-left:-4px}.share_audio_desc{color:#b2b2b2;overflow:hidden;padding-top:6px;font-size:12px}.share_audio_desc em{font-weight:400;font-style:normal}.share_audio_length_current{float:left}.share_audio_length_total{float:right}.share_audio_length_total:before{position:absolute;left:-9999em;content:"总时长"}.topic_area{display:block;margin:17px 1px 16px 0;font-weight:400;text-decoration:none;font-size:0;line-height:0;text-align:left;-ms-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}.topic_area .unsupport_tips{display:none;padding:20px 20px 8px;line-height:1.6;font-size:16px}.topic_area.unsupport .unsupport_tips{display:block}.topic_wrp{border:1px solid #ebebeb;line-height:1.6;background-color:#fcfcfc;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;overflow:hidden;padding:8px 10px;display:block}.topic_thumb{float:left;width:75px;height:100px;margin-right:20px;background-repeat:no-repeat;background-position:50% 50%;-webkit-background-size:cover;background-size:cover}.topic_content{position:relative;display:block;overflow:hidden;height:100px}.topic_title{font-weight:400;font-size:16px;color:#3e3e3e}.topic_desc{color:#8c8c8c;font-size:14px}.topic_title,.topic_desc{display:block;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.topic_info{position:absolute;bottom:0;left:0;right:0;color:#8c8c8c}.topic_info_primary{float:left;margin-right:.5em;font-size:14px}.topic_info_extra{float:right;margin-left:.5em;font-size:14px}.icon_topic{background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/topic/icon_topic.2x2e4987.png) no-repeat 0 0;width:10px;height:11px;vertical-align:middle;display:inline-block;-webkit-background-size:100% auto;background-size:100% auto;margin:-2px 5px 0 0}.iframe_full_video{position:fixed!important;left:0;right:0;top:0;bottom:0;z-index:1000;background-color:#000;margin-top:0!important}.video_iframe{display:block}.video_iframe+.img_loading{display:block}.video_ad_iframe{border:0;position:absolute;left:0;top:0;z-index:100;width:100%;height:100%;background-color:#fff}@media screen and (device-aspect-ratio:2/3),screen and (device-aspect-ratio:40/71){.meta_original_tag{padding-top:0}}@media(min-device-width:375px) and (max-device-width:667px) and (-webkit-min-device-pixel-ratio:2){.mm_appmsg .rich_media_inner,.mm_appmsg .rich_media_meta,.mm_appmsg .discuss_list,.mm_appmsg .rich_media_extra,.mm_appmsg .title_tips .tips{font-size:17px}.mm_appmsg .meta_original_tag{font-size:15px}}@media(min-device-width:414px) and (max-device-width:736px) and (-webkit-min-device-pixel-ratio:3){.mm_appmsg .rich_media_title{font-size:25px}}@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:portrait){.rich_media_area_extra{padding-bottom:34px}}@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) and (orientation:landscape){.rich_media_area_primary{padding:20px 59px 15px 59px}.rich_media_area_extra{padding:0 59px 21px 59px}}@media screen and (min-width:1024px){.rich_media{width:740px;margin-left:auto;margin-right:auto}.rich_media_inner{padding:20px}body{background-color:#fff}}@media screen and (min-width:1025px){body{font-family:"Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif}.rich_media{position:relative}.rich_media_inner{background-color:#fff;padding-bottom:100px}}@media screen and (min-width:1024px){.rich_media_meta{max-width:none}a.rich_media_meta_nickname{display:inline-block!important}span.rich_media_meta_nickname{display:none!important}.rich_media_content{min-height:350px}.rich_media_title{padding-bottom:10px;margin-bottom:14px;border-bottom:1px solid #e7e7eb}.discuss_container.access{width:740px;margin-left:auto;margin-right:auto;background-color:#fff}.discuss_container.editing .frm_textarea_box{margin:0}.frm_textarea_box{position:relative}.frm_textarea_box:before{content:" ";position:absolute;left:0;top:0;width:1px;height:100%;border-left:1px solid #e7e6e4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(0.5);transform:scaleX(0.5)}.frm_textarea_box:after{content:" ";position:absolute;left:0;top:0;width:1px;height:100%;border-left:1px solid #e7e6e4;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(0.5);transform:scaleX(0.5);left:auto;right:-2px}.rich_media_meta.nickname{max-width:none}.rich_tips.with_line .tips{background-color:#fff}}.text_unselecet{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;user-select:none}.pay_reading_area{padding:60px 8px 30px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto}.pay_tit_tips_wrp{position:relative}.pay_tit_tips_wrp:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #e0e0e0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.pay_tit_tips{position:relative;top:-0.75em;padding:0 .5em;background-color:#fff;color:#8c8c8c}.pay_tit_sub_tips{word-wrap:break-word;word-break:break-all;margin:-12px 0 10px}.btn_pay_reading{width:180px;height:35px;line-height:35px;text-align:center;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;color:#0aba07;border:1px solid #0aba07;margin:5px 0 14px 0;display:inline-block}.btn_pay_reading.disabled{border-color:#d5d6d7;color:#c4c2c5;background-color:#fbfbfd}.pay_tips{font-size:14px}.pop_tips .inner{width:280px;box-sizing:border-box;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;font-size:14px;background-color:#f7f7f9;position:fixed;left:50%;top:28%;margin-left:-140px;z-index:20}.pop_tips .inner .tips_title{font-size:16px;display:block;vertical-align:middle;max-width:98%;padding:15px 10px 0;color:#3e3e3e;text-align:center}.pop_tips .inner .tips_con{color:#888;font-size:14px;padding:10px 15px}.pop_tips .inner .tips_opr{line-height:50px;font-size:18px}.pop_tips .inner .tips_opr .ft_btn{position:relative;width:280px;display:block;text-align:center;color:#0aba07}.pop_tips .inner .tips_opr .ft_btn:before{content:" ";position:absolute;top:0;right:0;height:1px;border-top:1px solid #ececec;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5);left:0}.pop_tips .mask{width:100%;height:100%;position:fixed;left:0;top:0;background-color:rgba(0,0,0,0.4);z-index:1}.wx_poptips_wrp.pay_reading{top:50%;margin-top:-60px}.wx_poptips_wrp.pay_reading .toast_content{margin-top:75px}.weui_loading{width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:weuiLoading 1s steps(12,end) infinite;animation:weuiLoading 1s steps(12,end) infinite;background:transparent url() no-repeat;-webkit-background-size:100%;background-size:100%}@-webkit-keyframes weuiLoading{0%{-webkit-transform:rotate3d(0,0,1,0deg)}100%{-webkit-transform:rotate3d(0,0,1,360deg)}}@keyframes weuiLoading{0%{-webkit-transform:rotate3d(0,0,1,0deg)}100%{-webkit-transform:rotate3d(0,0,1,360deg)}}.load_img_wrp{display:inline-block;font-size:0;position:relative;font-weight:400;font-style:normal;text-indent:0;text-shadow:none 1px 1px rgba(0,0,0,0.5)}.load_img_wrp img{vertical-align:top}.base_loading_opr{position:absolute;top:50%;left:50%;margin-top:-15px;margin-left:-15px}.weui_loading.base_img_loading{width:30px;height:30px}.base_reload_opr{display:block;position:absolute;top:50%;left:50%;text-align:center;margin-top:-32px;margin-left:-28px}.base_reload_opr .base_img_reload{display:inline-block;width:40px;height:40px;background-image:url('');background-size:cover;background-repeat:no-repeat}.base_reload_opr .desc{font-size:14px;color:#888;margin-top:10px}.bg_gray_wrp{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#eeedeb}.gif_img_wrp{display:inline-block;font-size:0;position:relative;font-weight:400;font-style:normal;text-indent:0;text-shadow:none 1px 1px rgba(0,0,0,0.5)}.gif_img_wrp img{vertical-align:top}.gif_img_tips{background:rgba(0,0,0,0.6)!important;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#99000000',endcolorstr = '#99000000');border-top-left-radius:1.2em 50%;-moz-border-radius-topleft:1.2em 50%;-webkit-border-top-left-radius:1.2em 50%;border-top-right-radius:1.2em 50%;-moz-border-radius-topright:1.2em 50%;-webkit-border-top-right-radius:1.2em 50%;border-bottom-left-radius:1.2em 50%;-moz-border-radius-bottomleft:1.2em 50%;-webkit-border-bottom-left-radius:1.2em 50%;border-bottom-right-radius:1.2em 50%;-moz-border-radius-bottomright:1.2em 50%;-webkit-border-bottom-right-radius:1.2em 50%;line-height:2.3;font-size:11px;color:#fff;text-align:center;position:absolute;bottom:10px;left:10px;min-width:65px}.gif_img_tips.loading{min-width:75px}.gif_img_tips i{vertical-align:middle;margin:-0.2em .73em 0 -2px}.gif_img_play_arrow{display:inline-block;width:0;height:0;border-width:8px;border-style:dashed;border-color:transparent;border-right-width:0;border-left-color:#fff;border-left-style:solid;border-width:5px 0 5px 8px}.gif_img_loading{width:14px;height:14px}i.gif_img_loading{margin-left:-4px}.gif_bg_tips_wrp{position:relative;height:0;line-height:0;margin:0;padding:0}.gif_bg_tips_wrp .gif_img_tips_group{position:absolute;top:0;left:0;z-index:9999}.gif_bg_tips_wrp .gif_img_tips_group .gif_img_tips{top:0;left:0;bottom:auto}.flex_context{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.flex_bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;word-wrap:break-word;word-break:break-all}.weapp_card{border:1px solid #e1e1e1;background-color:#fdfdfd;color:#3e3e3e;line-height:1.6;font-size:16px;font-weight:400;font-style:normal;text-indent:0;text-align:left;text-decoration:none}.weapp_card.flex_context{padding:12px 15px}.weapp_card.flex_context .weapp_card_hd{padding-right:1em}.weapp_card.flex_context .weapp_card_avatar{width:50px;height:50px}.weapp_card.flex_context .weapp_card_nickname{font-size:17px;font-weight:400;display:block;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.weapp_card.app_context{padding-top:10px;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;overflow:hidden}.weapp_card.app_context .weapp_card_bd{padding:0 15px 15px}.weapp_card.app_context .weapp_card_profile{font-size:12px;color:#8c8c8c}.weapp_card.app_context .weapp_card_avatar{width:20px;height:20px;margin:-0.2em 5px 0 0}.weapp_card.app_context .weapp_card_nickname{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-weight:400}.weapp_card.app_context .weapp_card_title{padding:.3em 0 .75em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-weight:400}.weapp_card.app_context .weapp_card_thumb_wrp{position:relative;display:block;padding-bottom:80%;overflow:hidden;background-repeat:no-repeat;background-position:center center;-webkit-background-size:cover;background-size:cover}.weapp_card.app_context .weapp_card_thumb{position:absolute;top:0;left:0;width:100%;height:100%!important}.weapp_card.app_context .weapp_card_ft{padding:0 15px;border-top:1px solid #e1e1e1;line-height:1.56em}.weapp_card.app_context,.weapp_card .weapp_card_bd,.weapp_card .weapp_card_ft,.weapp_card .weapp_card_nickname,.weapp_card .weapp_card_info,.weapp_card .weapp_card_title{display:block}.weapp_card_avatar{padding:0}.weapp_card_logo{color:#8c8c8c;font-size:13px}.icon_weapp_logo_mini{width:14px;height:14px;vertical-align:middle;margin-right:.2em;margin-top:-0.2em}.share_appmsg_container{padding:17px 20px;text-decoration:none;color:#000;-webkit-tap-highlight-color:transparent}.share_appmsg_container:active{background-color:#f7f7f7}.share_appmsg_container .flex_bd{padding-left:10px}.share_appmsg_title{font-size:16px}.share_appmsg_desc{color:#8c8c8c;font-size:13px;line-height:1.4;margin-top:.2em}.share_appmsg_icon{background:transparent url() no-repeat 0 0;width:34px;height:35px;vertical-align:middle;display:inline-block;-webkit-background-size:34px auto;background-size:34px auto}.friend_cmt_area{-webkit-transition:height .3s;transition:height .3s}.friend_cmt_area.hide{position:absolute;visibility:hidden}.friend_cmt_readmore{padding:30px;text-align:center}.friend_cmt_readmore a{-webkit-tap-highlight-color:rgba(0,0,0,0)}.img_loadederror{background-color:#eeedeb;border:1px solid #eeedeb;background-image:url('');background-size:40px;background-position:center center;background-repeat:no-repeat}.img_loading{background-color:#eeedeb;border:1px solid #eeedeb;background-size:22px;background-position:center center;background-repeat:no-repeat;background-image:url('')}.appmsg_card_context{position:relative;background-color:#fdfdfd}.appmsg_card_context:before{content:" ";border:1px solid #e2e2e2;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;position:absolute;top:0;left:0;width:200%;height:200%;-webkit-transform:scale(0.5);transform:scale(0.5);-webkit-transform-origin:0 0;transform-origin:0 0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.appmsg_card_context .mpda_cpc_inner{border:0}.mpda_cpc_inner{position:relative;border:1px solid #e2e2e2}.mpda_cpc_title{font-size:13px;padding:6px 10px;line-height:1.2;color:#8c8c8c}.mpda_cpc_title.mpda_cpc_title_right{text-align:right}.mpda_cpc_title.mpda_cpc_title_left{text-align:left}.appmsg_card_ft{position:relative;font-size:13px;display:flex;justify-content:space-between;align-items:center}.appmsg_card_ft:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid #ececec;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(0.5);transform:scaleY(0.5)}.dropdown_opr_tips{display:inline-block;vertical-align:top;color:#8c8c8c;position:relative}.dropdown_opr_tips.tl{display:block}.dropdown_opr_popover{display:none;font-size:13px;line-height:2.8;padding:0 1em;background:#fff;color:#576b95;border:1px solid #dfdfdf;box-shadow:0 1px 3px 0 rgba(0,0,0,0.1);border-radius:3px;position:absolute;top:100%;left:50%;-webkit-tap-highlight-color:rgba(0,0,0,0)}.dropdown_opr_popover:active{background-color:#ececec}.link_tips{float:right}.link_tips img{width:20px;height:20px;vertical-align:middle;margin-right:.2em;margin-top:-2px}.appmsg_card_btn{position:absolute;right:11px;top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);color:#576b95;border:1px solid #576b95;border-radius:3px;font-size:13px;line-height:1;padding:8px 9px;display:flex;justify-content:center;align-items:center}.appmsg_card_btn:active{border-color:#354567;color:#354567;-webkit-tap-highlight-color:rgba(0,0,0,0)}.appmsg_card_btn img{display:inline-block;width:13px;height:13px!important;vertical-align:middle;margin-right:6px;position:relative;top:.5px}.mpda_cpc_context{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;margin:14px 0}.mpda_cpc_context:before{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;z-index:1}.mpda_cpc_bd{position:relative;padding-bottom:56.25%;width:auto;height:auto;-webkit-background-size:cover;background-size:cover;background-position:50% 50%;background-repeat:no-repeat}.mpda_cpc_thumb{width:100%;position:absolute;top:0;left:0}.mpda_cpc_ft{padding:10.5px 11px}.mpda_cpc_ft.single{padding:22px 11px}.appmsg_card_msg{position:relative;top:2px;display:inline-block}.appmsg_card_msg .appmsg_card_msg_title{display:block;color:#3e3e3e;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.3;font-size:17px}.appmsg_card_msg .appmsg_card_msg_supp{margin-top:2px;display:block;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;font-size:13px;font-weight:400;color:#fa7834}.appmsg_card_msg .appmsg_card_msg_supp.price{font-family:'wechatnum';font-size:13px}@font-face{font-family:'wechatnum';src:url('data:application/octet-stream;base64,AAEAAAAQAQAABAAATFRTSJjR0dUAAAEMAAAAEE9TLzKKcYMzAAABHAAAAGBWRE1YdDl7tgAAAXwAAAXgY21hcADqAd0AAAdcAAAAjmN2dCAA8oWXAAAH7AAAACBmcGdtdCgNNAAACAwAAALmZ2x5Zpf8R/4AAAr0AAAGtGhkbXhOU2qhAAARqAAAAXhoZWFkBzA24QAAEyAAAAA2aGhlYQWdASoAABNYAAAAJGhtdHgX3AJCAAATfAAAADBsb2NhC1gJcgAAE6wAAAAabWF4cAIkAzEAABPIAAAAIG5hbWUBGuGYAAAT6AAAAs9wb3N0/50ARgAAFrgAAAAgcHJlcDNDNIkAABbYAAAAkwAAAAwBO0szTEs7S0tLS0sAAwH7AfQAAAAEArwCigAAAIwCvAKKAAAB3QAyAPoAAAIABgMEAAACAAQAAAABAAAAAAAAAAAAAAAAcHlycwBAAAAAOQLI/zMARQLUAAwAAAABAAAAAAH7AsgAAAAgAAAAAAABAAEBAQEBAAwA+Aj/AAgACP/+AAkACf/+AAoACv/9AAsAC//9AAwADP/9AA0ADf/9AA4ADv/9AA8AD//8ABAAEP/8ABEAEf/8ABIAEv/8ABMAE//7ABQAFP/7ABUAFf/7ABYAFv/7ABcAF//7ABgAGP/6ABkAGf/6ABoAGv/6ABsAG//6ABwAHP/6AB0AHf/5AB4AHv/5AB8AH//5ACAAIP/5ACEAIf/5ACIAIv/4ACMAI//4ACQAJP/4ACUAJf/4ACYAJv/3ACcAJ//3ACgAKP/3ACkAKf/3ACoAKv/3ACsAK//2ACwALP/2AC0ALf/2AC4ALv/2AC8AL//2ADAAMP/1ADEAMf/1ADIAMv/1ADMAM//1ADQANP/1ADUANf/0ADYANv/0ADcAN//0ADgAOP/0ADkAOf/zADoAOv/zADsAO//zADwAPP/zAD0APf/zAD4APv/yAD8AP//yAEAAQP/yAEEAQf/yAEIAQv/yAEMAQ//xAEQARP/xAEUARf/xAEYARv/xAEcAR//xAEgASP/wAEkASf/wAEoASv/wAEsAS//wAEwATP/vAE0ATf/vAE4ATv/vAE8AT//vAFAAUP/vAFEAUf/uAFIAUv/uAFMAU//uAFQAVP/uAFUAVf/uAFYAVv/tAFcAV//tAFgAWP/tAFkAWf/tAFoAWv/tAFsAW//sAFwAXP/sAF0AXf/sAF4AXv/sAF8AX//rAGAAYP/rAGEAYf/rAGIAYv/rAGMAY//rAGQAZP/qAGUAZf/qAGYAZv/qAGcAZ//qAGgAaP/qAGkAaf/pAGoAav/pAGsAa//pAGwAbP/pAG0Abf/pAG4Abv/oAG8Ab//oAHAAcP/oAHEAcf/oAHIAcv/nAHMAc//nAHQAdP/nAHUAdf/nAHYAdv/nAHcAd//mAHgAeP/mAHkAef/mAHoAev/mAHsAe//mAHwAfP/lAH0Aff/lAH4Afv/lAH8Af//lAIAAgP/kAIEAgf/kAIIAgv/kAIMAg//kAIQAhP/kAIUAhf/jAIYAhv/jAIcAh//jAIgAiP/jAIkAif/jAIoAiv/iAIsAi//iAIwAjP/iAI0Ajf/iAI4Ajv/iAI8Aj//hAJAAkP/hAJEAkf/hAJIAkv/hAJMAk//gAJQAlP/gAJUAlf/gAJYAlv/gAJcAl//gAJgAmP/fAJkAmf/fAJoAmv/fAJsAm//fAJwAnP/fAJ0Anf/eAJ4Anv/eAJ8An//eAKAAoP/eAKEAof/eAKIAov/dAKMAo//dAKQApP/dAKUApf/dAKYApv/cAKcAp//cAKgAqP/cAKkAqf/cAKoAqv/cAKsAq//bAKwArP/bAK0Arf/bAK4Arv/bAK8Ar//bALAAsP/aALEAsf/aALIAsv/aALMAs//aALQAtP/aALUAtf/ZALYAtv/ZALcAt//ZALgAuP/ZALkAuf/YALoAuv/YALsAu//YALwAvP/YAL0Avf/YAL4Avv/XAL8Av//XAMAAwP/XAMEAwf/XAMIAwv/XAMMAw//WAMQAxP/WAMUAxf/WAMYAxv/WAMcAx//WAMgAyP/VAMkAyf/VAMoAyv/VAMsAy//VAMwAzP/UAM0Azf/UAM4Azv/UAM8Az//UANAA0P/UANEA0f/TANIA0v/TANMA0//TANQA1P/TANUA1f/TANYA1v/SANcA1//SANgA2P/SANkA2f/SANoA2v/SANsA2//RANwA3P/RAN0A3f/RAN4A3v/RAN8A3//QAOAA4P/QAOEA4f/QAOIA4v/QAOMA4//QAOQA5P/PAOUA5f/PAOYA5v/PAOcA5//PAOgA6P/PAOkA6f/OAOoA6v/OAOsA6//OAOwA7P/OAO0A7f/NAO4A7v/NAO8A7//NAPAA8P/NAPEA8f/NAPIA8v/MAPMA8//MAPQA9P/MAPUA9f/MAPYA9v/MAPcA9//LAPgA+P/LAPkA+f/LAPoA+v/LAPsA+//LAPwA/P/KAP0A/f/KAP4A/v/KAP8A///KAAAAAwAAAAMAAABmAAEAAAAAABwAAwABAAAAPgAGACIAAAAuAAwACwAAAAEAAgADAAQABQAGAAcACAAJAAoABAAoAAAABgAEAAEAAgAuADn//wAAAC4AMP///93/0QABAAAAAAAAAAQAKAAAAAYABAABAAIALgA5//8AAAAuADD////d/9EAAQAAAAAAAAAAABQAWwBmgAAAAP/6AAYB+wAGAsgABgAUAGUAawAAAAC4AAAsS7gACVBYsQEBjlm4Af+FuABEHbkACQADX14tuAABLCAgRWlEsAFgLbgAAiy4AAEqIS24AAMsIEawAyVGUlgjWSCKIIpJZIogRiBoYWSwBCVGIGhhZFJYI2WKWS8gsABTWGkgsABUWCGwQFkbaSCwAFRYIbBAZVlZOi24AAQsIEawBCVGUlgjilkgRiBqYWSwBCVGIGphZFJYI4pZL/0tuAAFLEsgsAMmUFhRWLCARBuwQERZGyEhIEWwwFBYsMBEGyFZWS24AAYsICBFaUSwAWAgIEV9aRhEsAFgLbgAByy4AAYqLbgACCxLILADJlNYsEAbsABZioogsAMmU1gjIbCAioobiiNZILADJlNYIyG4AMCKihuKI1kgsAMmU1gjIbgBAIqKG4ojWSCwAyZTWCMhuAFAioobiiNZILgAAyZTWLADJUW4AYBQWCMhuAGAIyEbsAMlRSMhIyFZGyFZRC24AAksS1NYRUQbISFZLbgACixLuAAJUFixAQGOWbgB/4W4AEQduQAJAANfXi24AAssICBFaUSwAWAtuAAMLLgACyohLbgADSwgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgADiwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv/S24AA8sSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgAECwgIEVpRLABYCAgRX1pGESwAWAtuAARLLgAECotuAASLEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgAEyxLU1hFRBshIVktAAAAAgA7//QB2gLUABUAKwAquAAsL7gAFi+5AAUAAvS4ACwQuAAQ0LgAEC+5ACEAAvS4AAUQuAAt3DAxATIeAhURFA4CIyIuAjURND4CFzQuAiMiDgIVERQeAjMyPgI1AQorTDghIThMKytLOCEhOEuQEBslFRUkHBAQHCQVFSUbEALUIThMK/7AK0w4ISE4TCsBQCtMOCHKFSUbEBAbJRX+tBUlGxAQGyUVAAAAAAEAUgAAAXUCyAAHAC8AuAAARVi4AAAvG7kAAAAJPlm4AABFWLgAAi8buQACAAU+WboABAACAAAREjkwMQEzESMRByc3AQRxcWtHsgLI/TgCP19TlQAAAAABAD8AAAHYAtQAHQBsuAAKK7sAGwANAAgADiu4ABsQuAAB0LgAAS9BBQBKAAgAWgAIAAJdQQkACQAIABkACAApAAgAOQAIAARduAAbELgAH9wAuAALRVi4AAIvG7kAAgAOPlm7ABYADAANAA4ruAACELkAAAAM9DAxNyEVIT0BATY1NC4CIyIOAgcnPgEzMh4CFRQHwgER/mwBHREQGyQVFScgFwRTF25FK0s4ISFqamoBAWoXHhMjGQ8QFxoLNTpJIDdJKj0yAAEAH//0AegCyAAnAE+4AAoruwAFAA0AFgAOK0EFAEoAFgBaABYAAl1BCQAJABYAGQAWACkAFgA5ABYABF24AAUQuAAo3AC7ABEADAAKAA4ruwAlAAwAIgAOKzAxAR4DFRQOAiMiJic3HgEzMj4CNTQuAiMiBgcGByc3IzUhFQcBKSlGMx0mQlkyRXEgZBE8JRsvJBQUJC8bBgsFKRw1r8ABWYQBzwkrPk4rMldBJkQ5NB0jFCIvGhsuIxQBAQgaJP9lNsMAAAAAAgAaAAAB7gLIAAoADQA5ALgAAEVYuAAILxu5AAgACT5ZuAAARVi4AAMvG7kAAwAFPlm6AAsAAwAIERI5ugANAAMACBESOTAxJRUjFSM1ITUBMxEhMxEB7k1l/t4BFnH+6bL5ZZSUZQHP/jEBOAAAAAEAL//0Ae8CyAAoAHm4AAoruAApL7gAFi9BBQBKABYAWgAWAAJdQQkACQAWABkAFgApABYAOQAWAARduQAFAA30uAApELgAItC4ACIvuQAnAA30uAAFELgAKtwAuwARAAwACgAOK7sAJAAMACUADiu7AAAADAAbAA4rugAnABsAABESOTAxATIeAhUUDgIjIiYnNx4BMzI+AjU0LgIjIgYHDgEHJxEhFSMVNgECMVZBJSVBVjFFcR1kDzslGi0iFBQiLRoZLhECAQFEAUbhGwHOJUFWMTFWQSVHOjQeJhMiLRoaLSIUFBEBAgEuAWVlnAcAAAACACz/9AHvAsgAFwArABQAuAAARVi4ABMvG7kAEwAJPlkwMQEyHgIVFA4CIyIuAjU0NjcTMwMyNhMyPgI1NC4CIyIOAhUUHgIBDi5SPiMjPlIuL1I+Iw0LynaKBQoFGCsgExMgKxgZKyATEyArAbcjPlIvL1E+IyM+US8cMhcBjv7uAf6oEyArGBkrIBMTICsZGCsgEwAAAAEAQgAAAdYCyAAIABQAuAAARVi4AAQvG7kABAAFPlkwMRMhFTEDIxMhNUIBlOJ14P7jAshf/ZcCY2UAAAMAKf/0AewC1AAfADMASQBQugA5AEUAAytBBQDaAEUA6gBFAAJdQRsACQBFABkARQApAEUAOQBFAEkARQBZAEUAaQBFAHkARQCJAEUAmQBFAKkARQC5AEUAyQBFAA1dMDEBHgEVFA4CIyIuAjU0NjcuATU0PgIzMh4CFRQGJRQWFxYzMjc+ATU0LgIjIg4CEzI+AjU0JicuASMiBgcOARUUHgIBoCMpIz5SLi9SPiMpIxsfIThMKytLOCEf/uUbFhogHxoWGxEdJhYWJx0RaxgrIBMrIgoUCwsVCiIrEyArAX4fVjMvUj4jIz5SLzNWHxxHKSpKNiAgNkoqKUdtHC0OEREOLRwVJhwQEBwm/kMTICsZJjwNAwQEAw08JhkrIBMAAAACACkAAAHsAtQAFwArABQAuAAARVi4ABMvG7kAEwAFPlkwMQEiLgI1ND4CMzIeAhUUBgcDIxMGIgMiDgIVFB4CMzI+AjU0LgIBCi9RPiMjPlEvL1I+Iw0LynaKBQoFGCsgExMgKxgZKyATEyArAREjPlEvL1I+IyM+Ui8bMhf+cgESAQFYEyArGRgrIBMTICsYGSsgEwAAAAEATgAAAMUAdgAEABS7AAAAAgABAAQruAAAELgAA9AwMTMjNTMVxXd3dnYAAAAXAAAAEAkFBQUFBQUFBQUFBQUDAAAKBgUGBQYGBQYFBQUFAwAACwYGBgYGBgYGBgYGBgMAAAwHBgYGBwcGBwYGBgYDAAANBwcHBwcHBwcHBwcHBAAADwkICAgICAgJCAgICAQAABAJCAkJCQkJCQkJCQkEAAARCgkJCQkJCQoJCQkJBQAAEwoKCgoKCgoKCgoKCgUAABULCwsLCwsLCwsLCwsGAAAYDQwMDQ0NDQ0NDQ0NBwAAGw8ODw4PDg4ODg4ODggAAB0QDxAPEA8PDw8PDw8IAAAgERAREREQERARERERCQAAIRIRERIRERIREhISEgkAACUUExQUExQUExQUFBQKAAAqFxUVFhcWFhYWFhYWDAAALhkXGBkZGBkZGRkZGQ0AADIbGRobGhobGhsbGxsOAAA2HRsdHR0cHR0dHR0dDwAAOh8dHh8fHx8eHx8fHxAAAEMkIiQkJCMkJCQkJCQTAABLKCYoKCgnKCgoKCgoFQAAAAEAAAABAACsV3zoXw889QAZA+gAAAAA0h6dvgAAAADT9VViAAD/IwHvA7gAAAAJAAIAAAAAAAAAAQAAAsr+4gDIAhUAGgAmAe8AAQAAAAAAAAAAAAAAAAAAAAwB9AAAAhUAOwIVAFICFQA/AhUAHwIVABoCFQAvAhUALAIVAEICFQApAhUAKQEWAE4AAAAAAFYAggDmAUoBggH8AkgCZgL4A0QDWgAAAAEAAAAMAEoAAwAAAAAAAQAAAAAAFAAAAgAC5gAAAAAAAAAQAMYAAQAAAAAAAAAfAAwAAQAAAAAAAQATACsAAQAAAAAAAgAGAD4AAQAAAAAAAwAZAEQAAQAAAAAABAATAF0AAQAAAAAABQAPAHAAAQAAAAAABgATAH8AAQAAAAAACAAfAJIAAwABBAkAAAA+ALEAAwABBAkAAQAmAO8AAwABBAkAAgAMARUAAwABBAkAAwA+ASEAAwABBAkABAAmAV8AAwABBAkABQAeAYUAAwABBAkABgAmAaMAAwABBAkACAA+AclOQVVRR05PSFVPSFpEZXNpZ246IDIwMTUgYnkgVGVuY2VudCByZWxlYXNlV2VDaGF0TnVtYmVyLTE1MTEyNU1lZGl1bVdlQ2hhdE51bWJlci0xNTExMjU6IDIwMTVXZUNoYXROdW1iZXItMTUxMTI1VmVyc2lvbiAwMDEuMDAwV2VDaGF0TnVtYmVyLTE1MTEyNURlc2lnbjogMjAxNSBieSBUZW5jZW50IHJlbGVhc2UARABlAHMAaQBnAG4AOgAgADIAMAAxADUAIABiAHkAIABUAGUAbgBjAGUAbgB0ACAAcgBlAGwAZQBhAHMAZQBXAGUAQwBoAGEAdABOAHUAbQBiAGUAcgAtADEANQAxADEAMgA1AE0AZQBkAGkAdQBtAEQAZQBzAGkAZwBuADoAIAAyADAAMQA1ACAAYgB5ACAAVABlAG4AYwBlAG4AdAAgAHIAZQBsAGUAYQBzAGUAVwBlAEMAaABhAHQATgB1AG0AYgBlAHIALQAxADUAMQAxADIANQBWAGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMABXAGUAQwBoAGEAdABOAHUAbQBiAGUAcgAtADEANQAxADEAMgA1AEQAZQBzAGkAZwBuADoAIAAyADAAMQA1ACAAYgB5ACAAVABlAG4AYwBlAG4AdAAgAHIAZQBsAGUAYQBzAGUAAAAAAwAAAAAAAP+aAEYAAAAAAAAAAAAAAAAAAAAAAAAAALgACisBugACAAwADCsBvwANADQALAAiABgADwAAABIrAL8ADAA3ACwAIgAYAA8AAAASKwC6AA4AAQARK7gACyBFfWkYRLgAACsAugABAAEAAisBugACAAEAAisBvwACADYAMAAlABsAEAAAAAgrAL8AAQA9ADAAJQAbABAAAAAIKwC6AAMABAAHK7gAACBFfWkYRAA=') format('truetype');font-weight:normal;font-style:normal}@media(min-device-width:414px) and (max-device-width:736px) and (-webkit-min-device-pixel-ratio:3){.appmsg_card_ft,.appmsg_card_btn{font-size:15px}}.da_video_area .da_video_bg_cover{width:100%;min-height:100px;display:block;background-repeat:no-repeat;background-position:center center;background-size:cover}.da_btn_more{display:inline-block;color:#576b95;font-size:13px;border:1px solid #576b95;border-radius:3px;line-height:2.2;padding:0 .65em}.da_brand_info{display:flex;align-items:center;min-height:38px}.da_brand_info .da_brand_info_hd{width:35px;height:35px;display:inline-block;margin-right:10px;vertical-align:middle;border-radius:50%;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.da_brand_info .da_brand_info_content{font-size:0;display:inline-block;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.da_brand_info .da_brand_info_title{margin:0;font-size:14px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.da_brand_info .da_brand_info_details{margin:0;vertical-align:top;font-size:13px;color:#878787;-webkit-tap-highlight-color:rgba(0,0,0,0)}.discuss_icon_tips{margin-top:20px}.rich_tips.discuss_title_line{margin-top:30px}.discuss_item:first-child{margin-top:12px}.discuss_item:last-child{margin-bottom:20px}</style><style id="page/appmsg/not_in_mm.css">.not_in_mm .rich_media_meta_list{position:relative;z-index:1}.not_in_mm .rich_media_content{position:relative}.not_in_mm .profile_container{width:535px;position:absolute;top:100%;left:65px;font-size:14px;*margin-top:10px}.not_in_mm .profile_inner{position:relative;padding:30px 22px 36px 144px;background-color:#fff;border:1px solid #d9dadc;*zoom:1}.not_in_mm .profile_arrow_wrp{position:absolute;left:22px;top:-8px}.not_in_mm .profile_arrow{display:inline-block;width:0;height:0;border-width:8px;border-style:dashed;border-color:transparent;border-top-width:0;border-bottom-color:#d9dadc;border-bottom-style:solid;position:absolute;top:0}.not_in_mm .profile_arrow.arrow_in{margin-top:1px;border-bottom-color:#fff}.not_in_mm .profile_avatar{position:absolute;width:100px;left:24px;top:24px;height:100px!important}.not_in_mm .profile_nickname{font-size:16px;font-weight:400}.not_in_mm .profile_meta{margin-top:5px;overflow:hidden;*zoom:1}.not_in_mm .profile_meta_label{float:left;width:4em;margin-right:1em}.not_in_mm .profile_meta_value{display:block;overflow:hidden;*zoom:1;color:#adadad}.not_in_mm .icon_verify{width:16px;height:16px;vertical-align:middle;display:inline-block;line-height:9em;overflow:hidden}.not_in_mm .icon_verify.success{background:transparent url(//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/wxverify/icon_verify_success238f07.png) no-repeat 0 0}.not_in_mm span.rich_media_meta_nickname{display:inline-block}.not_in_mm a.rich_media_meta_nickname{display:none}.not_in_mm .rich_media_inner{position:relative}.not_in_mm .qr_code_pc_outer{display:none!important;position:fixed;left:0;right:0;top:20px;color:#717375;text-align:center}.not_in_mm .qr_code_pc_inner{position:relative;width:740px;margin-left:auto;margin-right:auto}.not_in_mm .qr_code_pc{position:absolute;right:-140px;top:0;width:140px;padding:16px;border:1px solid #d9dadc;background-color:#fff;word-wrap:break-word;word-break:break-all}.not_in_mm .qr_code_pc p{font-size:14px;line-height:20px}.not_in_mm .qr_code_pc_img{width:102px;height:102px}@media screen and (min-width:1025px){.not_in_mm .qr_code_pc_outer{display:block!important}}</style><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper.js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(1).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(2).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(3).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(4).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(5).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(6).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(7).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(8).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(9).js" charset="utf-8"></script><script type="text/javascript" src="./RunLoop解决卡顿问题_files/YNoteClipper(10).js" charset="utf-8"></script></head>
    <body id="activity-detail" class="zh_CN mm_appmsg rich_media_empty_extra not_in_mm">
        
<script nonce="" type="text/javascript">
    var write_sceen_time = (+new Date());
</script>

<div id="js_article" class="rich_media">
    <div class="rich_media_inner">
                        
        
        <div id="page-content" class="rich_media_area_primary">
            
                        <div id="img-content">
                
                <h2 class="rich_media_title" id="activity-name">
                    RunLoop解决卡顿问题                                    </h2>
                <div id="meta_content" class="rich_media_meta_list">
                                                            <em id="post-date" class="rich_media_meta rich_media_meta_text">2018-04-24</em>

                                        <a class="rich_media_meta rich_media_meta_link rich_media_meta_nickname" href="https://mp.weixin.qq.com/s/FpyIj7vVzjpDxUyYuCkmXQ##" id="post-user">iOS开发</a>
                    <span class="rich_media_meta rich_media_meta_text rich_media_meta_nickname">iOS开发</span>


                    <div id="js_profile_qrcode" class="profile_container" style="display: none;">
                        <div class="profile_inner">
                            <strong class="profile_nickname">iOS开发</strong>
                            <img class="profile_avatar" id="js_profile_qrcode_img" src="./RunLoop解决卡顿问题_files/qrcode" alt="">

                            <p class="profile_meta">
                            <label class="profile_meta_label">微信号</label>
                            <span class="profile_meta_value">iOSDevTip</span>
                            </p>

                            <p class="profile_meta">
                            <label class="profile_meta_label">功能介绍</label>
                            <span class="profile_meta_value">最新iOS、iPhone资讯，万名iOS开发者、swift开发、果粉聚集，参与技术讨论，整理开发技巧，分享创业经验！享受生活、热爱编程！</span>
                            </p>
                            
                        </div>
                        <span class="profile_arrow_wrp" id="js_profile_arrow_wrp" style="left: 48px;">
                            <i class="profile_arrow arrow_out"></i>
                            <i class="profile_arrow arrow_in"></i>
                        </span>
                    </div>
                </div>
                                
                
                
                
                                                
                                                                
                
                <div class="rich_media_content " id="js_content">
                    

                    

                    
                    
                    <section class="" style="display:none;" data-tools="新媒体管家" data-label="powered by xmt.cn"></section><section class=""><p style="text-align: justify;"><span style="font-size: 14px;"></span></p><p style="padding-right: 0.5em;padding-left: 0.5em;white-space: normal;max-width: 100%;min-height: 1em;color: rgb(62, 62, 62);text-align: center;"><span style="max-width: 100%;line-height: 34.1333px;font-size: 14px;letter-spacing: 0.8px;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">点击上方“</span><span style="max-width: 100%;line-height: 34.1333px;font-size: 14px;letter-spacing: 0.8px;box-sizing: border-box !important;word-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 122, 170);box-sizing: border-box !important;word-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;">iOS开发</strong></strong></span><span style="max-width: 100%;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">”，选择“置顶公众号”</span></span><span style="max-width: 100%;color: rgb(255, 41, 65);font-size: 14px;line-height: 22.4px;box-sizing: border-box !important;word-wrap: break-word !important;"></span></p><p style="margin: 0em 0.5em;padding-right: 0.5em;padding-left: 0.5em;white-space: normal;max-width: 100%;min-height: 1em;color: rgb(62, 62, 62);text-align: center;"><span style="max-width: 100%;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">关键时刻，第一时间送达！</span></p><p style="margin: 0em 0.5em;padding-right: 0.5em;padding-left: 0.5em;white-space: normal;max-width: 100%;min-height: 1em;color: rgb(62, 62, 62);text-align: center;"><img class=" " data-ratio="0.0625" data-src="http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIG18kzbzliaybJA5y49s2zn9OVOziayVbGUmujwPYZLVGmbMalFKZr8GstdMVntUWN6NVaibmrbsQR4w/640?" data-w="640" width="auto" style="color: rgb(178, 178, 178); box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: 656px !important; height: auto !important;" _width="656px" src="./RunLoop解决卡顿问题_files/640" data-fail="0"></p><p style="padding-right: 0.5em;padding-left: 0.5em;white-space: normal;"><a href="https://mp.weixin.qq.com/s?__biz=MzAxMzQ3NzQ3Nw==&amp;mid=2654250659&amp;idx=5&amp;sn=a6af148ed8fdf2cce2baaf62390953ed&amp;scene=21#wechat_redirect" target="_blank"></a></p><p style="padding-right: 0.5em;padding-left: 0.5em;white-space: normal;"><a href="https://mp.weixin.qq.com/s?__biz=MzI1OTQwOTg2Mg==&amp;mid=2247485053&amp;idx=4&amp;sn=041d388a2b25a5d3c869e2c99fcf893f&amp;scene=21#wechat_redirect" target="_blank"><img class=" __bg_gif" data-backh="261" data-backw="558" data-copyright="0" data-ratio="0.46730462519936206" data-src="https://mmbiz.qpic.cn/mmbiz_gif/8RTSPr4mlymeeDuqGvOToCf0rvibQickeR0ibXPicZJ0RMiaJFpk8TicHlOWYdvNurUov1l9wrSW8QB5MDqa9HMbKRAw/640?wx_fmt=gif" data-type="gif" data-w="627" style="width: 540px !important; height: auto !important; visibility: visible !important;" _width="540px" src="./RunLoop解决卡顿问题_files/640(1)" data-order="0" data-fail="0"></a></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">人生就像RunLoop，不断的循环、不断的往复。当线程被杀掉，当生命结束，RunLoop就消失了，人生也就结束了。在有限的生命里，为何不让自己像RunLoop一样优雅的活着，享受每一个循环。</span><br></p><p><br></p><p style="text-align: justify;"><span style="font-size: 14px;">作为一个有强迫症患者，在自己的app中容不下一丝杂质。这不最近遇到一个卡顿问题，查了半天代码没问题，后来发现内存暴涨。这是一个列表页面，加载了很多图片，最后查下来是因为图片太大，导致内存暴涨然后卡顿。作为一个正常的列表，代码写的很完美。可是怎么解决内存暴涨的问题呢？</span></p><p><br></p><p><span style="font-size: 14px;">这里有一个完整的Demo(https://github.com/chriseleee/load_big_image)，包含卡顿与优化后的代码:</span></p><p><br></p><p style="text-align: center;"><img class="" data-ratio="1.2" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992al21IM2g6Bs5lBR8YhOw3JSflib9tGSVDKic1RjFQwvlVaRmyr02eCxqg/640?wx_fmt=png" data-type="png" data-w="250" src="./RunLoop解决卡顿问题_files/640(2)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></p><p style="text-align: center;"><span style="color: rgb(136, 136, 136);font-size: 12px;">目录</span></p><p><br></p><p style="text-align: center;"><img class="" data-ratio="0.28714285714285714" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992aWmd4yTgu60licDsskCVHHxbg8E6EZvIEdJ7ynlYvHsBrYYiaibUpq5icwQ/640?wx_fmt=png" data-type="png" data-w="700" src="./RunLoop解决卡顿问题_files/640(3)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></p><p style="text-align: center;"><span style="font-size: 12px;color: rgb(136, 136, 136);">通过在storyboard中更改两套代码</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>一、卡顿分析</strong></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">最根本的原因是RunLoop转一圈的时间太长了，因为一次RunLoop循环需要解析24张大图，很卡</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br>既然一次RunLoop加载24张图卡，那能不能一次循环加载1张呢？</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>二、分析RunLoop的运行机制</strong></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">RunLoop：运行循环<br>-保证（线程）不退出<br>-负责监听所有事件：时钟、触摸、网络事件，没有事件就睡眠<br>-每一条线程上面都有一个RunLoop，但是子线程的RunLoop默认不运行<br>RunLoop的事件处理：每当有时钟、触摸、网络事件发生的时候，RunLoop苏醒，执行一次循环，循环执行完毕马上进入睡眠状态。<br>可以猜想：能不能通过NSTimer来每间隔一定时间执行一个任务，这样RunLoop每间隔一定时间就会苏醒一次。每苏醒一次就执行加载一张图片。当图片加载完成让NSTimer释放，当列表每滑动一次，让NSTimer重新执行任务。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">如下图，RunLoop 想要跑起来，必须有 Mode 对象支持，而 Mode 里面必须有<br>(NSSet *)Source、 (NSArray *)Timer ，源和定时器。<br>至于另外一个类(NSArray *)observer是用于监听 RunLoop 的状态，因此不会激活RunLoop。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: center;"><img class="" data-ratio="0.7682926829268293" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992agRyE5NXjwNbRlfA1jY2CCtY9MKKibibkOUTLwAKS6Wu9Hy47Gw73Yn4A/640?wx_fmt=png" data-type="png" data-w="246" src="./RunLoop解决卡顿问题_files/640(4)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></p><p style="text-align: center;"><span style="font-size: 12px;color: rgb(136, 136, 136);">Runloop</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">observer是用于监听 RunLoop 的状态，我们就可以通过observer来监听runloop的苏醒<br><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">伪代码<br>1、创建一个定时器：每间隔0.001s执行一个空方法来唤醒RunLoop<br>2、将加载图片的方法装入block，将block加入数组<br>3、监听RunLoop的苏醒，苏醒回掉就执行一次就从数组中取出一个事件，执行完的事件从数组中删除</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">说干就干。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>三、代码实现</strong></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">可以先下载Demo</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>1、创建一个定时器：每间隔0.001s执行一个空方法来唤醒RunLoop(这里存在质疑，后面已经回答了质疑)</strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span>.timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> scheduledTimerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0.001</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerMethod) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br><br>-(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)timerMethod{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//啥都不干!!</span><br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><br></p><p style="text-align: justify;"><span style="font-size: 14px;">那这里添加定时器又是为了干什么呢？应不应该加呢？下面会讲到。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>2、将加载图片的方法装入block，将block加入数组</strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UITableViewCell</span> *)tableView:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UITableView</span> *)tableView cellForRowAtIndexPath:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSIndexPath</span> *)indexPath {<br> &nbsp; &nbsp;MyTableViewCell *cell = [[MyTableViewCell alloc] cellWithTableView:tableView withID:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"cell"</span>];<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"current:%ld"</span>,(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">long</span>)indexPath.row);<br> &nbsp; &nbsp;...<br> &nbsp; &nbsp;cell.myImageView.image = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>;<br> &nbsp; &nbsp;cell.secondLImage.image = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>;<br> &nbsp; &nbsp;cell.thirdyLImage.image = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>;<br> &nbsp; &nbsp;cell.fouthLImage.image = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>;<br> &nbsp; <span class="" style="font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);word-wrap: inherit !important;word-break: inherit !important;">##### //添加事件</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加文字</span><br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.myLabel.text = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSString</span> stringWithFormat:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"%zd - Drawing index is top priority"</span>, indexPath.row];<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.thirdLabel.text = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSString</span> stringWithFormat:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"%zd - Drawing large image is low priority. Should be distributed into different run loop passes."</span>, indexPath.row];<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSString</span> *path1 = [[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSBundle</span> mainBundle] pathForResource:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"spaceship"</span> ofType:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"png"</span>];<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加图片</span><br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> *image1 = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> imageWithContentsOfFile:path1];<br> &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.myImageView.image = image1;<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> *image2 = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> imageWithContentsOfFile:path1];<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.secondLImage.image = image2;<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> *image3 = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> imageWithContentsOfFile:path1];<br> &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.thirdyLImage.image = image3;<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> addTask:^{<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> *image4 = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIImage</span> imageWithContentsOfFile:path1];<br> &nbsp; &nbsp; &nbsp; &nbsp;cell.fouthLImage.image = image4;<br> &nbsp; &nbsp;}];<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">return</span> cell;<br>}<br>-(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)addTask:(RunloopBlock)task{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">if</span> (!<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span>.timer) {<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//这是优化</span><br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span>.timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> scheduledTimerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0.001</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerMethod) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加任务到数组!!</span><br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span>.tasks addObject:task];<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><strong><span style="font-size: 16px;">3、监听RunLoop的苏醒，苏醒回掉就执行一次就从数组中取出一个事件，执行完的事件从数组中删除</span></strong></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);word-wrap: inherit !important;word-break: inherit !important;">#pragma mark - <span class="" style="font-size: inherit;color: inherit;line-height: inherit;word-wrap: inherit !important;word-break: inherit !important;">&lt;RunLoop&gt;</span></span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加RunLoop观察者!! &nbsp;CoreFoundtion 里面 Ref (引用)指针!!</span><br>-(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)addRunloopObserver{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//拿到当前的runloop</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopRef</span> runloop = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopGetCurrent</span>();<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//定义一个context</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverContext</span> context = {<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>,<br> &nbsp; &nbsp; &nbsp; &nbsp;(__bridge <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> *)(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span>),<br> &nbsp; &nbsp; &nbsp; &nbsp;&amp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRetain</span>,<br> &nbsp; &nbsp; &nbsp; &nbsp;&amp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRelease</span>,<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">NULL</span>,<br> &nbsp; &nbsp;};<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//定义观察</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">static</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> defaultModeObserver;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//创建观察者</span><br> &nbsp; &nbsp;defaultModeObserver = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverCreate</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">NULL</span>, kCFRunLoopBeforeWaiting, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>, &amp;Callback, &amp;context);<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加当前runloop的观察者!!</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopAddObserver</span>(runloop, defaultModeObserver, kCFRunLoopCommonModes);<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//C 语言里面Create相关的函数!创建出来的指针!需要释放</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRelease</span>(defaultModeObserver);<br>}<br><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">static</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> Callback(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> observer, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopActivity</span> activity, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> *info){<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"gemelaile "</span>);<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//拿到控制器</span><br> &nbsp; &nbsp;ViewController * vc = (__bridge ViewController *)info;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">if</span> (vc.tasks.count == <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>) {<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//任务执行完成就清掉timer</span><br> &nbsp; &nbsp; &nbsp; &nbsp;[vc.timer invalidate];<br> &nbsp; &nbsp; &nbsp; &nbsp;vc.timer = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>;<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">return</span>;<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;RunloopBlock task = vc.tasks.firstObject;<br> &nbsp; &nbsp;task();<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//干掉第一个任务</span><br> &nbsp; &nbsp;[vc.tasks removeObjectAtIndex:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>];<br>}<br><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">如上代码做到了监听RunLoop的苏醒，每次苏醒都会回掉Callback方法</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>4 打开demo，分别引入</strong></span></p><p style="text-align: center;"><br></p><p style="text-align: center;"><img class="" data-ratio="1.2" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992a8bEU0nPuAsAsibBGKx3awkZVRgpI1UXR0W1D2icMVbUZPtmUB7YJicozQ/640?wx_fmt=png" data-type="png" data-w="250" src="./RunLoop解决卡顿问题_files/640(5)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></p><p style="text-align: center;"><span style="font-size: 12px;color: rgb(136, 136, 136);">demo</span></p><p style="text-align: center;"><span style="font-size: 12px;color: rgb(136, 136, 136);"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">ViewController(优化过的)与ViewControllerNo(未优化过的)运行，看是不是完美解决卡顿。（可以看看内存，cpu）</span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>敲黑板</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">那么我们现在来讲讲为什么前面我们要添加定时器。<br>我们把加载图片的事件放进数组中，每次runloop循环一次就执行一次事件。每次有拖动事件发生，runloop都会自动执行，runloop执行几次呢，我不知道。所以为了安全起见，这里我加了个定时器。当然这里可以添加优化，例如滑动结束后初始化定时器，事件执行完就清理定时器。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">完美解决卡顿问题，RunLoop是不是很强大。<br>是不是以为这篇文章就结束了，那你就太小看我了。<br>每次有拖动事件发生，runloop都会自动执行，runloop执行几次呢，我不知道。最后我进入了深入的实验了解。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>真正的重点来了</strong></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong><br></strong></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;"> &nbsp; &nbsp;//创建runloop的即将处理 Source的观察者</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">static</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> defaultModeObserver1;<br> &nbsp; &nbsp;defaultModeObserver1 = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverCreate</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">NULL</span>, kCFRunLoopBeforeSources, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>, &amp; sourceTodo, &amp;context);<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//添加当前runloop的观察者!!</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopAddObserver</span>(runloop, defaultModeObserver1, kCFRunLoopCommonModes);<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//C 语言里面Create相关的函数!创建出来的指针!需要释放</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRelease</span>(defaultModeObserver1);<br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;"><br><br>static</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> sourceTodo(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> observer, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopActivity</span> activity, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> *info){<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"sourceTodo"</span>);<br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">这样每次有事件就会调用sourceTodo的事件<br>在callback也加上输出log,同时把[vc.tasks removeObjectAtIndex:0];注销掉，那样vc.tasks就一直有事件，看看到底callBack会走多少次。这样是不是就解决了我们的疑惑呢</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">static</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> Callback(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> observer, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopActivity</span> activity, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span> *info){<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//拿到控制器</span><br> &nbsp; &nbsp;ViewController * vc = (__bridge ViewController *)info;<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"CallbackNoTask"</span>);<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//这里还没有执行事件</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">if</span> (vc.tasks.count == <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>) {<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">return</span>;<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;RunloopBlock task = vc.tasks.firstObject;<br> &nbsp; &nbsp;task();<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//干掉第一个任务</span><br> &nbsp; <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// [vc.tasks removeObjectAtIndex:0];</span><br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"CallbackHasTask"</span>);<span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//这里执行了事件</span><br><br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: center;"><img class="" data-ratio="0.9884057971014493" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992aBqkS5s41NPvvFeDGFicgLulIRqyffaBKibxBoiaXkNDztaDC8o4fnb9Tw/640?wx_fmt=png" data-type="png" data-w="345" style="font-size: 14px; width: auto !important; height: auto !important; visibility: visible !important;" src="./RunLoop解决卡顿问题_files/640(6)" data-fail="0"><br></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">一个惊人的发现，callback一直停不下来。这样不就是说在callback里执行的</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">RunloopBlock task = vc.tasks.firstObject;<br>task();<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><strong><span style="font-size: 14px;">这也是一个source，只要数组里面有数据，runloop就不会停！！！<br></span></strong><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">那这样果断去掉定时器。<br>把注销的代码[vc.tasks removeObjectAtIndex:0]打开，运行看看</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: center;"><span style="font-size: 14px;"><img class="" data-ratio="1.0606860158311346" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992apFXrBO7MQ1eib8vJPib442drPbTjrZW5p2ZKHUu4FqrdLmibTaGdqIUkw/640?wx_fmt=png" data-type="png" data-w="379" src="./RunLoop解决卡顿问题_files/640(7)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">事件执行完后，runloop还是会跑几次就结束了。<br>功夫不负苦心人，终于算了解决了这个疑惑。再次感谢之前对我的文章提出质疑的大神们，是你们让我有了动力来解决这些疑惑。</span></p><p style="text-align: justify;"><span style="font-size: 14px;">有没有了解的欲望！！！</span></p><p style="text-align: justify;"><span style="font-size: 14px;">完整的Demo：https://github.com/chriseleee/load_big_image</span></p><p style="text-align: justify;"><span style="font-size: 14px;">下面是RunLoop的一些基础知识，希望对你有帮助</span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>RunLoop入门</strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>一、简介</strong></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">首先，先象征性的讲下RunLoop的概念<br>从字面上看，就可以看出就是兜圈圈，就是一个死循环嘛。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>二、作用</strong></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">1.保持程序运行<br>2.处理app的各种事件（比如触摸，定时器等等）<br>3.节省CPU资源，提高性能。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>三、枯燥知识</strong></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">下面是关于RunLoop的一些使用简述。也许有点枯燥，但是也是必须要知道的！（敲黑板ing），我尽量说的通俗易懂一点。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>1.两个API</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span><span style="font-size: 14px;">首先要知道iOS里面有两套API可以访问和使用RunLoop：</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><strong><span style="font-size: 14px;">Foundation</span></strong></p><p style="text-align: justify;"><strong><span style="font-size: 14px;"><br></span></strong><span style="font-size: 14px;">NSRunLoop</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><strong><span style="font-size: 14px;">Core Foundation</span></strong></p><p style="text-align: justify;"><strong><span style="font-size: 14px;"><br></span></strong><span style="font-size: 14px;">CFRunLoopRef</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">上面两套都可以使用，但是要知道CFRunLoopRef是用c语言写的，是开源的，相比于NSRunLoop更加底层，而NSRunLoop其实是对CFRunLoopRef的一个简单的封装。便于使用而已。这样说来，显然CFRunLoopRef的性能要高一点。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>2.RunLoop与线程(形象)</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span><span style="font-size: 14px;">1.每条线程都有唯一的与之对应的RunLoop对象。<br>2.主线程的RunLoop已经创建好了，而子线程的需要手动创建。（也就是说子线程的RunLoop默认是关闭的，因为有时候开了个线程但却没有必要开一个RunLoop，不然反而浪费了资源。 ）<br>3.RunLoop在第一次获取时创建，在线程结束时销毁。（这就相当于 线程是一个类，RunLoop是类里的实例变量，这样便于理解）</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>3.获取RunLoop对象</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span><strong><span style="font-size: 14px;">Foundation</span></strong></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoop currentRunLoop</span>]; <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 获得当前线程的RunLoop对象</span><br>[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoop mainRunLoop</span>]; <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 获得主线程的RunLoop对象</span><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><strong><span style="font-size: 14px;">Core Foundation</span></strong></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopGetCurrent</span>(); <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 获得当前线程的RunLoop对象</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopGetMain</span>(); <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 获得主线程的RunLoop对象 </span><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>4.RunLoop相关类</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span><span style="font-size: 14px;">在Core Foundation中有RunLoop的五个类</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopRef</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopModeRef</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopSourceRef</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopTimerRef</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">CFRunLoopObserverRef</span> <br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">这五个类的关系如下</span></p><p style="text-align: center;"><img class="" data-ratio="0.7682926829268293" data-src="https://mmbiz.qpic.cn/mmbiz_png/foPACGrddJ0dPChRQicYYaoRI7hP7992afYBJoznejyMVCLcKibgI6zF9d9duL55fwQq7aW6tb5jf9MOGNxDOHkA/640?wx_fmt=png" data-type="png" data-w="246" src="./RunLoop解决卡顿问题_files/640(8)" style="width: auto !important; height: auto !important; visibility: visible !important;" data-fail="0"></p><p style="text-align: center;"><span style="font-size: 12px;color: rgb(136, 136, 136);">五个类的关系</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">由图中可以得出以下几点：<br>1.CFRunLoopModeRef代表的是RunLoop的运行模式。<br>2.一个 RunLoop 包含若干个 Mode，每个 Mode 又包含若干个 Source/Timer/Observer。<br>3.每次调用 RunLoop 的主函数时，只能指定其中一个 Mode，这个Mode被称作 CurrentMode。<br>4.如果需要切换 Mode，只能退出 Loop，再重新指定一个 Mode 进入。这样做主要是为了分隔开不同组的 Source/Timer/Observer，让其互不影响。<br><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">CFRunLoopModeRef</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">系统默认注册了5个mode</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">kCFRunLoopDefaultMode <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//App的默认Mode，通常主线程是在这个Mode下运行</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UITrackingRunLoopMode</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//界面跟踪 Mode，用于 ScrollView 追踪触摸滑动，保证界面滑动时不受其他 Mode 影响</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIInitializationRunLoopMode</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 在刚启动 App 时第进入的第一个 Mode，启动完成后就不再使用</span><br>GSEventReceiveRunLoopMode <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 接受系统事件的内部 Mode，通常用不到</span><br>kCFRunLoopCommonModes <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//这是一个占位用的Mode，不是一种真正的Mode</span><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">至于CFRunLoopModeRef的使用我会在 下面的实验三timer的使用中 详细说到。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>四、实验讲解</strong></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">这里开始之前，希望您跟着新建一个工程。实操最清晰。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>一、main函数的实验</strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">再来做个试验：将main的代码添加一个输出NSLog，如下</span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">int</span> main(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">int</span> argc, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">char</span> * argv[]) {<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@autoreleasepool</span> {<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">int</span> res = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIApplicationMain</span>(argc, argv, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span>, <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSStringFromClass</span>([AppDelegate <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">class</span>]));<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"-----"</span>);<br> &nbsp; &nbsp; &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">return</span> res;<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;}<br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">你猜会输出 “-----” 吗？答案是否定的，你会发现程序始终不会到NSLog(@"-----");这一行来。这就说明了程序一直在运行着。其实这都是RunLoop的功劳，它的其中一个功能就是保持程序的持续运行。有了RunLoop，main里面相当于是这样的代码（伪代码）:</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;"><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">BOOL</span> running = <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>;<br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">do</span> {<br> &nbsp; <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 执行各种操作</span><br>} <span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">while</span> (running);<br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">return</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">0</span>;<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">程序是始终在while里面的，是一个死循环。</span></p><p style="text-align: justify;"><span style="font-size: 14px;">说到这里你肯定又会疑惑，RunLoop是什么时候创建的。其实在UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]))这个函数的内部就已经启动了一个RunLoop，所以函数一直没有返回，这才使得程序保持运行。</span></p><p style="text-align: justify;"><span style="font-size: 14px;">（注意：这个默认启动的RunLoop是和主线程相关的!!!）</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 18px;"><strong>二、NSTimer的使用<br></strong></span><span style="font-size: 14px;">在项目中用的NSTimer其实也和RunLoop有关系，下面我们来做个实验</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>实验一 scheduledTimer方法</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">新建一个工程，在ViewController中添加一个UIButton，增加button的响应以及timerTest方法，代码如下</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">IBAction</span>)ButtonDidClick:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">id</span>)sender {<br> &nbsp; &nbsp;[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> scheduledTimerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">1.0</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerTest) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br>}<br><br>- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)timerTest<br>{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"timerTest----"</span>);<br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">点击button可以看到输出台每隔一秒钟就打印"timerTest----"。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>实验二 timerWithTime方法</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">代码如下：</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">IBAction</span>)ButtonDidClick:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">id</span>)sender {<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> *timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> timerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">1.0</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerTest) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br>}<br><br>- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)timerTest<br>{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"timerTest----"</span>);<br>}<br><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">但是实验结果是，点击button后没有反应。为什么呢？</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br>噢~原来是少加了一句话，添加后的代码如下:</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">IBAction</span>)ButtonDidClick:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">id</span>)sender {<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> *timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> timerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">1.0</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerTest) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br> &nbsp; &nbsp;[[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoop</span> currentRunLoop] addTimer:timer forMode:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSDefaultRunLoopMode</span>];<br>}<br><br>- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)timerTest<br>{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"timerTest----"</span>);<br>}<br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">可是，为什么实验二比实验一要多加一句话呢？解：那是因为scheduledTimer方法会自动添加到当前的runloop里面去，而且runloop的运行模式kCFRunLoopDefaultMode，也就是说实验一已经将timer自动加入到了一个运行模式为kCFRunLoopDefaultMode的runloop中。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong>实验三 有scrollView的情况下使用Timer</strong></span></p><p style="text-align: justify;"><span style="font-size: 16px;"><strong><br></strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">首先，按钮响应以及timerTest的方法如下：</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">IBAction</span>)ButtonDidClick:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">id</span>)sender {<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> *timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> timerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">1.0</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerTest) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br> &nbsp; &nbsp;[[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoop</span> currentRunLoop] addTimer:timer forMode:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSDefaultRunLoopMode</span>];<br>}<br><br>- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">void</span>)timerTest<br>{<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSLog</span>(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);word-wrap: inherit !important;word-break: inherit !important;">@"timerTest----"</span>);<br>}<br><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">然后在vc中加一个textView，run起来，</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br>然后点击按钮，随后滑动textView，根据打印结果可以看出滑动textView的时候是不打印的，奇怪吧。其实说到底还是RunLoop搞的鬼。可以看到，我们把timer加到了NSDefaultRunLoopMode的runLoop中，而在滑动textview的时候，RunLoop就切换到UITrackingRunLoopMode模式，而上面有提到说：在每次调用 RunLoop 的主函数时，只能指定其中一个 Mode，这个Mode被称作 CurrentMode。 所以定时器就不起作用了。<br>现在可以思考一下解决方法了！（敲黑板ing）<br>提示一下，问题出在了模式上面，是不是修改一下模式就好了呢。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">解决方法：<br>上面有提到过五个mode</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">kCFRunLoopDefaultMode <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//App的默认Mode，通常主线程是在这个Mode下运行</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UITrackingRunLoopMode</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//界面跟踪 Mode，用于 ScrollView 追踪触摸滑动，保证界面滑动时不受其他 Mode 影响</span><br><span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">UIInitializationRunLoopMode</span> <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 在刚启动 App 时第进入的第一个 Mode，启动完成后就不再使用</span><br>GSEventReceiveRunLoopMode <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">// 接受系统事件的内部 Mode，通常用不到</span><br>kCFRunLoopCommonModes <span class="" style="font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);word-wrap: inherit !important;word-break: inherit !important;">//这是一个占位用的Mode，不是一种真正的Mode</span><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">其实如果把mode改为kCFRunLoopCommonModes的话就可以既支持kCFRunLoopDefaultMode又支持UITrackingRunLoopMode了。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br>修改如下：<br>修改mode类型</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><pre style="font-size: inherit;color: inherit;line-height: inherit;margin-top: 0px;margin-bottom: 0px;padding: 0px;"><code class="" style="margin-right: 2px;margin-left: 2px;line-height: 18px;font-size: 14px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);padding: 0.5em;display: block !important;word-wrap: normal !important;word-break: normal !important;overflow: auto !important;text-align: justify;">- (<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">IBAction</span>)ButtonDidClick:(<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">id</span>)sender {<br> &nbsp; &nbsp;<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> *timer = [<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSTimer</span> timerWithTimeInterval:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">1.0</span> target:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">self</span> selector:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">@selector</span>(timerTest) userInfo:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">nil</span> repeats:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);word-wrap: inherit !important;word-break: inherit !important;">YES</span>];<br> &nbsp; &nbsp;[[<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoop</span> currentRunLoop] addTimer:timer forMode:<span class="" style="font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);word-wrap: inherit !important;word-break: inherit !important;">NSRunLoopCommonModes</span>];<br>}<br><br></code></pre><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 14px;">然后run发现就算滚动textView也不会影响打印。</span></p><p style="text-align: justify;"><span style="font-size: 14px;"><br></span></p><p style="text-align: justify;"><span style="font-size: 20px;"><strong>写在最后：</strong></span></p><p style="text-align: justify;"><span style="font-size: 14px;">希望这篇文章对您有帮助。当然如果您发现有可以优化的地方，希望您能慷慨的提出来。最后祝您工作愉快！</span></p><p style="text-align: justify;"><br></p><p style="text-align: justify;"><em><span style="font-size: 12px;"></span></em></p><p><span style="font-size: 20px;color: rgb(0, 0, 0);"><br></span></p><p><strong><span style="font-size: 20px;color: rgb(0, 0, 0);"></span></strong></p><p style="padding-right: 0.5em;padding-left: 0.5em;white-space: normal;max-width: 100%;min-height: 1em;color: rgb(62, 62, 62);"><img class="" data-ratio="0.05776173285198556" data-src="http://mmbiz.qpic.cn/mmbiz_png/TWtGkwUapckh3mpakrDbSW8wA9icDkicxJx0WyJGMKyib6hq2N76bvoJMRUrHSPd8BCSYSrS6LA5Pl1DsTPgNKGsA/640?" data-type="png" data-w="554" title="银色金属分割线" width="100%" style="line-height: 25.6px; text-align: center; font-family: 微软雅黑; display: inline; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: 668px !important; height: auto !important;" _width="668px" src="./RunLoop解决卡顿问题_files/640(9)" data-fail="0"></p><ul class="list-paddingleft-2" style="list-style-type: circle;"><li><p><span style="max-width: 100%;font-size: 10px;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">作者：采釆一叶秋的iOS漫步</span></p></li><li><p><span style="max-width: 100%;font-size: 10px;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">链接：https://www.jianshu.com/p/ef2599f7251f</span></p></li><li><p><span style="max-width: 100%;font-size: 10px;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;">iOS开发整理发布，转载请联系作者授权</span></p></li></ul><p style="padding-right: 0.5em;padding-left: 0.5em;white-space: normal;max-width: 100%;min-height: 1em;line-height: normal;box-sizing: border-box !important;word-wrap: break-word !important;"><span style="max-width: 100%;font-size: 10px;color: rgb(178, 178, 178);box-sizing: border-box !important;word-wrap: break-word !important;"></span><a href="https://mp.weixin.qq.com/s?__biz=MzAxMzQ3NzQ3Nw==&amp;mid=2654250659&amp;idx=5&amp;sn=a6af148ed8fdf2cce2baaf62390953ed&amp;scene=21#wechat_redirect" target="_blank"><img class=" __bg_gif" data-backh="243" data-backw="558" data-copyright="0" data-ratio="0.43605236656596175" data-src="https://mmbiz.qpic.cn/mmbiz_gif/8RTSPr4mlymeeDuqGvOToCf0rvibQickeRsEibQevnVTpac8WEEr8yTTdVia8lGDM0JoAdg7Os86jhcnn6bpyInic9A/640?wx_fmt=gif" data-type="gif" data-w="993" style="width: 540px !important; height: auto !important; visibility: visible !important;" _width="540px" src="./RunLoop解决卡顿问题_files/640(10)" data-order="1" data-fail="0"></a><a href="http://mp.weixin.qq.com/s?__biz=MzI4MDYwMDc3MQ==&amp;mid=2247484211&amp;idx=2&amp;sn=6896ee011f863cd011e9e001362637d3&amp;scene=21#wechat_redirect" target="_blank"><span style="color: rgb(67, 149, 245);outline: 0px;max-width: 100%;font-weight: bold;line-height: normal;text-indent: 2em;box-sizing: border-box !important;word-wrap: break-word !important;"><img class="__bg_gif" data-ratio="0.48936170212765956" data-src="https://mmbiz.qpic.cn/mmbiz_gif/G1TofAf0fqgmKZQJjj39ceYg5aeBfPwxUaibqpUJfFp7R3GYWibpmFTrabicaljvDbtkkcPicCWwdMibzvkjR36bA2A/640?" data-type="gif" data-w="47" width="auto" style="border-width: 0px; border-style: initial; border-color: initial; line-height: 38.4384px; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: auto !important; height: auto !important;" _width="auto" src="./RunLoop解决卡顿问题_files/640(11)" data-order="2" data-fail="0"></span><span style="color: rgb(255, 41, 65);outline: 0px;max-width: 100%;font-size: 20px;font-weight: bold;box-sizing: border-box !important;word-wrap: break-word !important;">【点击成为Java大神】</span></a></p></section>
                </div>
                <script nonce="" type="text/javascript">
                    var first_sceen__time = (+new Date());

                    if ("" == 1 && document.getElementById('js_content')) {
                        document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); });
                    }

                    
                    (function(){
                        if (navigator.userAgent.indexOf("WindowsWechat") != -1){
                            var link = document.createElement('link');
                            var head = document.getElementsByTagName('head')[0];
                            link.rel = 'stylesheet';
                            link.type = 'text/css';
                            link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx3d171e.css";
                            head.appendChild(link);
                        }
                    })();
                </script>
                
                
                                
                <div class="ct_mpda_wrp" id="js_sponsor_ad_area" style="display:none;"></div>

                
                                <div class="reward_area tc" id="js_preview_reward" style="display:none;">
                    <p id="js_preview_reward_wording" class="tips_global reward_tips" style="display:none;"></p>
                    <p>
                        <a class="reward_access" id="js_preview_reward_link" href="https://mp.weixin.qq.com/s/FpyIj7vVzjpDxUyYuCkmXQ##"><span class="icon-reward"></span>赞赏</a>

                    </p>
                </div>
                <div class="reward_qrcode_area reward_area tc" id="js_preview_reward_qrcode" style="display:none;">
                    <p class="tips_global">长按二维码向我转账</p>
                    <p id="js_preview_reward_ios_wording" class="reward_tips" style="display:none;"></p>
                    <span class="reward_qrcode_img_wrp"><img class="reward_qrcode_img" src="./RunLoop解决卡顿问题_files/pic_reward_qrcode.2x3534dd.png"></span>
                    <p class="tips_global">受苹果公司新规定影响，微信 iOS 版的赞赏功能被关闭，可通过二维码转账支持公众号。</p>
                </div>
                            </div>
                        
                        <div class="rich_media_tool" id="js_toobar3">
                
                                
                                            <div id="js_read_area3" class="media_tool_meta tips_global meta_primary" style="display:none;">阅读 <span id="readNum3"></span></div>

                <span style="display:none;" class="media_tool_meta meta_primary tips_global meta_praise" id="like3">
                    <i class="icon_praise_gray"></i><span class="praise_num" id="likeNum3"></span>
                </span>

                <a id="js_report_article3" style="" class="media_tool_meta tips_global meta_extra" href="https://mp.weixin.qq.com/s/FpyIj7vVzjpDxUyYuCkmXQ##">投诉</a>

            </div>


                    </div>

        <div class="rich_media_area_primary sougou" id="sg_tj" style="display:none"></div>

        
        <div class="rich_media_area_extra">

            
                        <div class="mpda_bottom_container" id="js_bottom_ad_area" style="display: none;"></div>
                        
            <div id="js_iframetest" style="display:none;"></div>
                        
            <div class="rich_media_extra rich_media_extra_discuss" id="js_friend_cmt_area" style="display:none">
              
              
              
            </div>

                        <div class="rich_media_extra rich_media_extra_discuss" id="js_cmt_area" style="display:none">
            </div>
                    </div>

        
        <div id="js_pc_qr_code" class="qr_code_pc_outer" style="display: block;">
            <div class="qr_code_pc_inner">
                <div class="qr_code_pc">
                    <img id="js_pc_qr_code_img" class="qr_code_pc_img" src="./RunLoop解决卡顿问题_files/qrcode(1)">
                    <p>微信扫一扫<br>关注该公众号</p>
                </div>
            </div>
        </div>
    </div>
</div>
<div id="js_minipro_dialog" style="display:none;">
    <div class="weui-mask"></div>
    <div class="weui-dialog">
        <div class="weui-dialog__bd">即将打开"<span id="js_minipro_dialog_name"></span>"小程序</div>
        <div class="weui-dialog__ft">
            <a id="js_minipro_dialog_cancel" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_default">取消</a>
            <a id="js_minipro_dialog_ok" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_primary">打开</a>
        </div>
    </div>
</div>

        
        <script nonce="">
    var __DEBUGINFO = {
        debug_js : "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/debug/console34c264.js",
        safe_js : "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/moonsafe34c264.js",
        res_list: []
    };
</script>

<script nonce="" type="text/javascript">
(function() {
	var totalCount = 0,
			finishCount = 0;

	function _loadVConsolePlugin() {
		window.vConsole = new window.VConsole();
		while (window.vConsolePlugins.length > 0) {
			var p = window.vConsolePlugins.shift();
			window.vConsole.addPlugin(p);
		}
	}
	
	function _addVConsole(uri, cb) {
		totalCount++;
		var url = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/' + uri;
		var node = document.createElement('SCRIPT');
		node.type = 'text/javascript';
		node.src = url;
		node.setAttribute('nonce', '91802355');
		if (cb) {
			node.onload = cb;
		}
		document.getElementsByTagName('head')[0].appendChild(node);
	}
	if (
		(document.cookie && document.cookie.indexOf('vconsole_open=1') > -1)
		|| location.href.indexOf('vconsole=1') > -1
	) {
		window.vConsolePlugins = [];
		_addVConsole('3.0.0/vconsole.min.js', function() {
			
			_addVConsole('plugin/vconsole-mpopt/1.0.1/vconsole-mpopt.js', _loadVConsolePlugin);
		});
	}
})();
</script>
        
<script nonce="" type="text/javascript">

if (!window.console) window.console = { log: function() {} };

if (typeof getComputedStyle == 'undefined') {
    if (document.body.currentStyle) {
        window.getComputedStyle = function(el) {
            return el.currentStyle;
        }
    } else {
        window.getComputedStyle = {};
    }
}
(function(){
    window.__zoom = 1;
    
    (function(){
        var validArr = ","+([0.875, 1, 1.125, 1.25, 1.375]).join(",")+",";
        var match = window.location.href.match(/winzoom=(\d+(?:\.\d+)?)/);
        if (match && match[1]) {
            var winzoom = parseFloat(match[1]);
            if (validArr.indexOf(","+winzoom+",")>=0) {
                window.__zoom = winzoom;
            }
        }
    })();

    var isIE = false;
    if (typeof version != 'undefined' && version >= 6 && version <= 9) {
        isIE = true;
    }
    var getMaxWith=function(){
        var container = document.getElementById('img-content');
        var max_width = container.offsetWidth;
        var container_padding = 0;
        var container_style = getComputedStyle(container);
        container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
        max_width -= container_padding;
        var ua = navigator.userAgent.toLowerCase();
        var re = new RegExp("msie ([0-9]+[\.0-9]*)");
        var version;
        if (re.exec(ua) != null) {
            version = parseInt(RegExp.$1);
        }
        var isIE = false;
        if (typeof version != 'undefined' && version >= 6 && version <= 9) {
            isIE = true;
        }
        if (!max_width) {
            max_width = window.innerWidth - 30;      
        }
        return max_width;
    };
    var getParentWidth = function(dom){
        var parent_width = 0;
        var parent = dom.parentNode;
        var outerWidth = 0;
        while (true) {
            if(!parent||parent.nodeType!=1) break;
            var parent_style = getComputedStyle(parent);
            if (!parent_style) break;
            parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
            if (parent_width > 0) break;
            outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
            parent = parent.parentNode;
        }
        return parent_width;
    }
    var getOuterW=function(dom){
        var style=getComputedStyle(dom),
            w=0;
        if(!!style){
            w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
        }
        return w;
    };
    var getOuterH =function(dom){
        var style=getComputedStyle(dom),
            h=0;
        if(!!style){
            h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
        }
        return h;
    };
    var insertAfter = function(dom,afterDom){
        var _p = afterDom.parentNode;
        if(!_p){
            return;
        }
        if(_p.lastChild === afterDom){
            _p.appendChild(dom);
        }else{
            _p.insertBefore(dom,afterDom.nextSibling);
        }
    };
    var getQuery = function(name,url){
        
        var u  = arguments[1] || window.location.search,
            reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"),
            r = u.substr(u.indexOf("\?")+1).match(reg);
        return r!=null?r[2]:"";
    };
    (function(){
        var images = document.getElementsByTagName('img');
        var length = images.length;
        var max_width = getMaxWith();
        for (var i = 0; i < length; ++i) {
            var src_ = images[i].getAttribute('data-src');
            var realSrc = images[i].getAttribute('src');
            if (!src_ || realSrc) continue;
            var width_ = 1 * images[i].getAttribute('data-w') || max_width;
            var ratio_ = 1 * images[i].getAttribute('data-ratio');
            var height = 100;
            if (ratio_ && ratio_ > 0) {
                var img_style = getComputedStyle(images[i]);
                var init_width = images[i].style.width;
                
                if (init_width) {
                    images[i].setAttribute('_width', init_width);
                    if (init_width != 'auto') width_ = parseFloat(img_style.width);
                }
                var parent_width = getParentWidth(images[i])||max_width;
                var width = width_ > parent_width ? parent_width : width_; 
                var img_padding_border = getOuterW(images[i])||0;
                var img_padding_border_top_bottom = getOuterH(images[i])||0;
                height = (width - img_padding_border) * ratio_ + img_padding_border_top_bottom;
                images[i].style.cssText += ";width: " + width + "px !important;";
                if (isIE) {
                    var url = images[i].getAttribute('data-src');
                    images[i].src = url;
                } else {
                    if(width > 40 && height > 40){
                        images[i].className += ' img_loading';
                    }
                    images[i].src = "";
                }
            } else {
                images[i].style.cssText += ";visibility: hidden !important;";
            }
            images[i].style.cssText += ";height: " + height + "px !important;";
        }
    })();
    window.__videoDefaultRatio=16/9;
    window.__getVideoWh = function(dom){
        var max_width = getMaxWith(),
            width = max_width,
            ratio_ = dom.getAttribute('data-ratio')*1||(4/3),
            arr = [4/3, 16/9],
            ret = arr[0],
            abs = Math.abs(ret - ratio_);
        for(var j=1,jl=arr.length;j<jl;j++){
            var _abs = Math.abs(arr[j] - ratio_);
            if(_abs<abs){
                abs = _abs;
                ret = arr[j];
            }
        }
        ratio_ = ret;
        var parent_width = getParentWidth(dom)||max_width,
            width = width > parent_width ? parent_width : width,
            outerW = getOuterW(dom)||0,
            outerH = getOuterH(dom)||0,
            videoW = width - outerW,
            videoH = videoW/ratio_,
            height = videoH + outerH;
        return {w:width,h:height,vh:videoH,vw:videoW,ratio:ratio_};
    };

    (function(){
        var iframe = document.getElementsByTagName('iframe');
        for (var i=0,il=iframe.length;i<il;i++) {
            var a = iframe[i];
            var src_ = a.getAttribute('src')||a.getAttribute('data-src')||"";
            if(!/http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)){
                continue;
            }
            var vid = getQuery("vid",src_);
            if(!vid){
                continue;
            }
            vid=vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");
            a.removeAttribute('src');
            a.style.display = "none";
            var obj = window.__getVideoWh(a),
                mydiv = document.createElement('img');
            mydiv.className = "img_loading";
            mydiv.src="";
            mydiv.setAttribute("data-vid",vid);
            mydiv.style.cssText = "width: " + obj.w + "px !important;";
            insertAfter(mydiv,a);
            a.style.cssText += ";width: " + obj.w + "px !important;";
            a.setAttribute("width",obj.w);
            if(window.__zoom!=1){
                a.style.display = "block";
                mydiv.style.display = "none";
                a.setAttribute("_ratio",obj.ratio);
                a.setAttribute("_vid",vid);
            }else{
                mydiv.style.cssText += "height: " + obj.h + "px !important;";
                a.style.cssText += "height: " + obj.h + "px !important;";
                a.setAttribute("height",obj.h);
            }
            a.setAttribute("data-vh",obj.vh);
            a.setAttribute("data-vw",obj.vw);
            a.setAttribute("data-src",location.protocol+"//v.qq.com/iframe/player.html?vid="+ vid + "&width="+obj.vw+"&height="+obj.vh+"&auto=0");
        }
    })();

    (function(){
        if(window.__zoom!=1){
            document.getElementById('page-content').style.zoom = window.__zoom;
            var a = document.getElementById('activity-name');
            var b = document.getElementById('meta_content');
            if(!!a){
                a.style.zoom = 1/window.__zoom;
            }
            if(!!b){
                b.style.zoom = 1/window.__zoom;
            }
            var images = document.getElementsByTagName('img');
            for (var i = 0,il=images.length;i<il;i++) {
                images[i].style.zoom = 1/window.__zoom;
            }
            var iframe = document.getElementsByTagName('iframe');
            for (var i = 0,il=iframe.length;i<il;i++) {
                var a = iframe[i];
                a.style.zoom = 1/window.__zoom;
                var src_ = a.getAttribute('data-src')||"";
                if(!/http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)){
                    continue;
                }
                var ratio = a.getAttribute("_ratio");
                var vid = a.getAttribute("_vid");
                a.removeAttribute("_ratio");
                a.removeAttribute("_vid");
                var vw = a.offsetWidth - (getOuterW(a)||0);
                var vh = vw/ratio;
                var h = vh + (getOuterH(a)||0)
                a.style.cssText += "height: " + h + "px !important;"
                a.setAttribute("height",h);
                a.setAttribute("data-src",location.protocol+"//v.qq.com/iframe/player.html?vid="+ vid + "&width="+vw+"&height="+vh+"&auto=0");
                a.style.display = "none";
                var parent = a.parentNode;
                if(!parent){
                    continue;
                }
                for(var j=0,jl=parent.children.length;j<jl;j++){
                    var child = parent.children[j];
                    if(child.className.indexOf("img_loading")>=0 && child.getAttribute("data-vid")==vid){
                        child.style.cssText += "height: " + h + "px !important;";
                        child.style.display = "";
                    }
                }
            }
        }
    })();
})();
</script>
<script nonce="" type="text/javascript">
    var item_show_type = "0";
    var not_in_mm_css = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/not_in_mm3d171e.css";
    var windowwx_css = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx3d171e.css";
    var article_improve_combo_css = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_combo3d45b2.css";
    var tid = "";
    var aid = "";
    var clientversion = "";
    var appuin = ""||"MzA3NzM0NzkxMQ==";

    var source = "";
    var ascene = "";
    var subscene = "";
    var abtest_cookie = "";

    var scene = 75;

    var itemidx = "";
    var appmsg_token   = "";

    var _copyright_stat = "0";
    var _ori_article_type = "";

    var nickname = "iOS开发";
    var appmsg_type = "9";
    var ct = "1524567600";
    var publish_time = "2018-04-24" || "";
    var user_name = "gh_33fa0065e3f3";
    var user_name_new = "";
    var fakeid   = "";
    var version   = "";
    var is_limit_user   = "0";
    var round_head_img = "http://mmbiz.qpic.cn/mmbiz_png/8RTSPr4mlymRPctYMib80wibTKnQ7OddpCzVXbibliaw5cCBTt5Uje54yicaAtJwF7IBpoQ4Qic0oVcCWKYwEZgYFGHQ/0?wx_fmt=png";
    var ori_head_img_url = "http://wx.qlogo.cn/mmhead/Q3auHgzwzM4X0sib7iaelw43ib9DTeGmAApicA92AUwdXqE4396fdpfggQ/132";
    var msg_title = "RunLoop解决卡顿问题";
    var msg_desc = "人生就像RunLoop，不断的循环、不断的往复。当线程被杀掉，当生命结束，RunLoop就消失了，人生也就结束了。在有限的生命里，为何不让自己像RunLoop一样优雅的活着，享受每一个循环。";
    var msg_cdn_url = "http://mmbiz.qpic.cn/mmbiz_jpg/foPACGrddJ0dPChRQicYYaoRI7hP7992aeQWnqP06uW0v83mm5ywv4uDGL9ZqQG8u0hibvHwR6mXnKbnOyqR4CLA/0?wx_fmt=jpeg";
    var msg_link = "http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==\x26amp;mid=2655359644\x26amp;idx=2\x26amp;sn=be2ab28ec20a79098a28a074e14f0810\x26amp;chksm=84e25fb4b395d6a20143d25d26d6dbf13e14cb4b92054be4c3766087b707d7fcc1ca000203cc#rd";
    var user_uin = "0"*1;
    var msg_source_url = '';
    var img_format = 'jpeg';
    var srcid = '';
    var req_id = '2620KC7iv8GNfRCVjNEvVNhA';
    var networkType;
    var appmsgid = '' || ''|| "2655359644";
    var comment_id = "250659827758432256" || "250659827758432256" * 1;
    var comment_enabled = "" * 1;
    var is_need_reward = "0" * 1;
    var is_https_res = ("" * 1) && (location.protocol == "https:");
    var msg_daily_idx = "1" || "";
    var profileReportInfo = "" || "";

    var devicetype = "";
    var source_encode_biz = "";
    var source_username = "";
    
    var reprint_ticket = "";
    var source_mid = "";
    var source_idx = "";
    var source_biz = "";
    var author_id = "";

    var show_comment = "";
    var __appmsgCgiData = {
        wxa_product : ""*1,
        show_msg_voice: "0"*1,
        can_use_page : "0"*1,
        is_wxg_stuff_uin : "0"*1,
        card_pos : "",
        copyright_stat : "0",
        source_biz : "",
        hd_head_img : "http://wx.qlogo.cn/mmhead/Q3auHgzwzM4X0sib7iaelw43ib9DTeGmAApicA92AUwdXqE4396fdpfggQ/0"||(window.location.protocol+"//"+window.location.host + "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_rumor_link.2x264e76.jpg")
    };
    var _empty_v = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/pages/voice/empty26f1f1.mp3";

    var copyright_stat = "0" * 1;

    var pay_fee = "" * 1;
    var pay_timestamp = "";
    var need_pay = "" * 1;

    var need_report_cost = "0" * 1;
    var use_tx_video_player = "0" * 1;
    var appmsg_fe_filter = "contenteditable";

    var friend_read_source = "" || "";
    var friend_read_version = "" || "";
    var friend_read_class_id = "" || "";

    var is_only_read = "1" * 1;
    var read_num = "" * 1;
    var like_num = "" * 1;
    var liked = "" == 'true' ? true : false;
    var is_temp_url = "" ? 1 : 0;
    var send_time = "";
    var icon_emotion_switch = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch.2x2f1273.png";
    var icon_emotion_switch_active = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active.2x2f1273.png";
    var icon_loading_white = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white2805ea.gif";
    var icon_audio_unread = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/audio/icon_audio_unread26f1f1.png";
    var icon_qqmusic_default = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_default.2x26f1f1.png";
    var icon_qqmusic_source = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_source393e3a.png";
    var icon_kugou_source = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/kugou/icon_kugou_source393e3a.png";

    var topic_default_img = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/topic/pic_book_thumb.2x2e4987.png';
    var comment_edit_icon = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/icon_edit25ded2.png';
    var comment_loading_img = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white2805ea.gif';
    var voice_in_appmsg = {
        "1":"1"
            };
    var reprint_style = ''*1;
    var wxa_img_alert = "" != 'false';

    
    
    
    

    
    var weapp_sn_arr_json = "" || "";

    
    var ban_scene = "0" * 1;

    var svr_time = "1524746421" * 1;
    
    var is_transfer_msg = ""*1||0;

    var malicious_title_reason_id = "0" * 1; 

    
    var modify_time = "";


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


        window.wxtoken = "777";
        
    
    
    
    
    window.is_login = '0' * 1; 

    window.__moon_initcallback = function(){
        if(!!window.__initCatch){
            window.__initCatch({
                idkey : 27611+2,
                startKey : 0,
                limit : 128,
                badjsId: 43,
                reportOpt : {
                    uin : uin,
                    biz : biz,
                    mid : mid,
                    idx : idx,
                    sn  : sn
                },
                extInfo : {
                    network_rate : 0.01,    
                    badjs_rate: 0.1 
                }
            });
        }
    }
    </script>

<script nonce="" type="text/javascript">
(function(){
    window.__logClientLog = function(msg){
        try{
            var method;
            if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)){
                method = 'writeLog';
            }else if(/(Android)/i.test(navigator.userAgent)){
                method = 'log';
            }
            if(!!method)
                doLog(method, msg);
        }catch(e){
            console.error(e)
            throw e
        }
    }
    function doLog(method, msg){
        if(!!method && !!top.window.WeixinJSBridge && !!top.window.WeixinJSBridge.invoke){
            top.window.WeixinJSBridge.invoke(method, {
                "level" : 'info',
                "msg" : "[WechatFe][appmsg]" + msg
            });
        }else{
            
            setTimeout(function(){
                if( top.window.document.addEventListener ){
                    top.window.document.addEventListener('WeixinJSBridgeReady', function(){
                        doLog(method,msg)
                    }, false);
                }else if (top.window.document.attachEvent){
                    top.window.document.attachEvent('WeixinJSBridgeReady', function(){
                        doLog(method, msg)
                    });
                    top.window.document.attachEvent('onWeixinJSBridgeReady', function(){
                        doLog(method, msg)
                    });
                }
            }, 0)
        }
    }
    window.__moonErrRep = function(src){
        window.__logClientLog(' moon load err ' + src);
    }
    window.__moonSucRep = function(src){
        window.__logClientLog(' moon load suc ' + src);
    }
    window.setTimeout(function(){
        window.__logClientLog(' index.html end, __moonhasinit : ' + window.__moonhasinit);
    }, 500);
})();
</script>

        <script nonce="">window.__moon_host = 'res.wx.qq.com';window.__moon_mainjs = 'appmsg/index.js';window.moon_map = {"new_video/player.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/new_video/player.html3d1ddf.js","biz_wap/zepto/touch.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/zepto/touch34c264.js","biz_wap/zepto/event.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/zepto/event34c264.js","biz_wap/zepto/zepto.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/zepto/zepto34c264.js","page/pages/video.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/pages/video.css3d1dbe.js","a/appdialog_confirm.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/appdialog_confirm.html34f0d8.js","widget/wx_profile_dialog_primary.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/widget/wx_profile_dialog_primary.css34f0d8.js","appmsg/emotion/caret.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/caret278965.js","new_video/player.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/new_video/player3d45b2.js","a/appdialog_confirm.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/appdialog_confirm34c32a.js","biz_wap/jsapi/cardticket.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/cardticket34c264.js","biz_wap/utils/localstorage.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/localstorage36c4f2.js","appmsg/friend_comment_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/friend_comment_tpl.html3d0130.js","appmsg/comment_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment_tpl.html3d0130.js","biz_wap/utils/fakehash.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/fakehash38c7af.js","appmsg/comment_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment_report3d5603.js","biz_common/utils/emoji_panel_data.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/emoji_panel_data3518c6.js","biz_common/utils/emoji_data.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/emoji_data3518c6.js","appmsg/emotion/textarea.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/textarea3d171e.js","appmsg/emotion/nav.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/nav278965.js","appmsg/emotion/common.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/common3518c6.js","appmsg/emotion/slide.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/slide2a9cd9.js","appmsg/emotion/dom.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/dom31ff31.js","biz_common/utils/wxgspeedsdk.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/wxgspeedsdk3518c6.js","pages/music_report_conf.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/music_report_conf3c6d6e.js","pages/report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/report3d3b85.js","pages/player_adaptor.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/player_adaptor39d6ee.js","pages/music_player.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/music_player3d3b85.js","a/video.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/video3d45b2.js","a/sponsor.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/sponsor3d45b2.js","a/app_card.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/app_card3d45b2.js","a/ios.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/ios393966.js","a/android.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/android393966.js","a/profile.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/profile31ff31.js","a/cpc_a_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/cpc_a_tpl.html3d45b2.js","a/sponsor_a_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/sponsor_a_tpl.html3d1ddf.js","a/a_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/a_tpl.html3d45b2.js","a/mpshop.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/mpshop311179.js","a/wxopen_card.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/wxopen_card3d3eaf.js","a/card.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/card311179.js","biz_wap/utils/position.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/position34c264.js","a/a_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/a_report3d3b85.js","pages/loadscript.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/loadscript3d3b85.js","biz_wap/utils/ajax_load_js.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/ajax_load_js3d3b85.js","appmsg/comment.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment3d60b9.js","appmsg/my_comment_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/my_comment_tpl.html3d136f.js","appmsg/cmt_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cmt_tpl.html3d60b9.js","sougou/a_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/a_tpl.html2c6e7c.js","appmsg/emotion/emotion.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/emotion/emotion353f34.js","biz_wap/utils/wapsdk.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/wapsdk34c264.js","biz_common/utils/report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/report3518c6.js","appmsg/open_url_with_webview.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/open_url_with_webview3d3b85.js","appmsg/articleReport.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/articleReport3d171e.js","biz_common/utils/http.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/http3518c6.js","biz_common/utils/cookie.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/cookie3518c6.js","appmsg/topic_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/topic_tpl.html31ff31.js","pages/weapp_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/weapp_tpl.html36906d.js","biz_common/utils/monitor.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/monitor3518c6.js","appmsg/weapp_common.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/weapp_common3af55a.js","pages/voice_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_tpl.html38518d.js","pages/kugoumusic_ctrl.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/kugoumusic_ctrl3d171e.js","pages/qqmusic_ctrl.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/qqmusic_ctrl3d171e.js","pages/voice_component.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/voice_component3d3efa.js","pages/qqmusic_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/qqmusic_tpl.html393e3a.js","new_video/ctl.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/new_video/ctl3d3b85.js","a/testdata.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/testdata3bb523.js","appmsg/reward_entry.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/reward_entry3d55ff.js","appmsg/like.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/like3d171e.js","pages/version4video.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/version4video3d3b85.js","a/a.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/a/a3d461f.js","rt/appmsg/getappmsgext.rt.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/rt/appmsg/getappmsgext.rt2c21f6.js","biz_wap/utils/storage.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/storage34c264.js","biz_common/tmpl.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/tmpl3518c6.js","appmsg/share_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/share_tpl.html36906d.js","appmsg/appmsgext.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/appmsgext3d55ff.js","appmsg/img_copyright_tpl.html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/img_copyright_tpl.html2a2c13.js","pages/video_ctrl.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/video_ctrl3d3b85.js","pages/create_txv.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/pages/create_txv3d43f7.js","appmsg/comment_utils.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/comment_utils3d171e.js","biz_common/ui/imgonepx.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/ui/imgonepx3518c6.js","biz_common/utils/respTypes.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/respTypes3518c6.js","biz_wap/utils/log.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/log34c264.js","sougou/index.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/sougou/index36913b.js","biz_wap/safe/mutation_observer_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/mutation_observer_report34c264.js","appmsg/fereport.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/fereport3d3b85.js","appmsg/report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report3404b3.js","appmsg/report_and_source.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/report_and_source3d171e.js","appmsg/page_pos.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/page_pos3d3efa.js","appmsg/cdn_speed_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_speed_report3097b2.js","appmsg/wxtopic.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/wxtopic31a3be.js","appmsg/new_index.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/new_index36906d.js","appmsg/weapp.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/weapp3af55a.js","appmsg/weproduct.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/weproduct3cc2d7.js","appmsg/voicemsg.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/voicemsg3b1748.js","appmsg/autoread.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/autoread3af14e.js","appmsg/voice.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/voice38518d.js","appmsg/qqmusic.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/qqmusic3d171e.js","appmsg/iframe.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/iframe3d43f7.js","appmsg/product.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/product393966.js","appmsg/review_image.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/review_image3af55a.js","appmsg/outer_link.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/outer_link275627.js","appmsg/copyright_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/copyright_report2ec4b2.js","appmsg/async.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/async3d45b2.js","biz_wap/ui/lazyload_img.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/ui/lazyload_img3af55a.js","biz_common/log/jserr.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/log/jserr3518c6.js","appmsg/share.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/share3d3efa.js","appmsg/cdn_img_lib.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/cdn_img_lib38b7bb.js","biz_common/utils/url/parse.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/url/parse36ebcf.js","page/appmsg/not_in_mm.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/not_in_mm.css3d171e.js","page/appmsg/page_mp_article_improve_combo.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_combo.css3d45b2.js","page/appmsg_new/not_in_mm.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/not_in_mm.css3d171e.js","page/appmsg_new/combo.css":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/combo.css3d45b2.js","appmsg/appmsg_report.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/appmsg_report3d43f7.js","biz_common/moment.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/moment3518c6.js","biz_wap/jsapi/core.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/jsapi/core3d3b85.js","biz_common/dom/event.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/event3a25e9.js","appmsg/test.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/test3d3b85.js","biz_wap/utils/mmversion.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/mmversion34c264.js","appmsg/max_age.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/max_age3d3b85.js","biz_common/dom/attr.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/attr3518c6.js","biz_wap/utils/ajax.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/ajax3d3b85.js","appmsg/log.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/log300330.js","biz_common/dom/class.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/dom/class3518c6.js","biz_wap/utils/device.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/utils/device34c264.js","biz_common/utils/string/html.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_common/utils/string/html3518c6.js","appmsg/index.js":"//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/appmsg/index3d3efa.js"};</script><script nonce="" type="text/javascript" id="moon_inline"> window.__mooninline=1; window.setTimeout(function() {  function __moonf__(){
if(!window.__moonhasinit){
window.__moonhasinit=!0,window.__moonclientlog=[],window.__wxgspeeds&&(window.__wxgspeeds.moonloadedtime=+new Date),
"object"!=typeof JSON&&(window.JSON={
stringify:function(){
return"";
},
parse:function(){
return{};
}
});
var e=function(){
function e(e){
try{
var o;
/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)?o="writeLog":/(Android)/i.test(navigator.userAgent)&&(o="log"),
o&&t(o,e);
}catch(n){
throw console.error(n),n;
}
}
function t(e,o){
var n,r,i={};
n=top!=window?top.window:window;
try{
r=n.WeixinJSBridge,i=n.document;
}catch(a){}
e&&r&&r.invoke?r.invoke(e,{
level:"info",
msg:"[WechatFe][moon]"+o
}):setTimeout(function(){
i.addEventListener?i.addEventListener("WeixinJSBridgeReady",function(){
t(e,o);
},!1):i.attachEvent&&(i.attachEvent("WeixinJSBridgeReady",function(){
t(e,o);
}),i.attachEvent("onWeixinJSBridgeReady",function(){
t(e,o);
}));
},0);
}
var n;
localStorage&&JSON.parse(localStorage.getItem("__WXLS__moonarg"))&&"fromls"==JSON.parse(localStorage.getItem("__WXLS__moonarg")).method&&(n=!0),
e(" moon init, moon_inline:"+window.__mooninline+", moonls:"+n),function(){
var e={},o={},t={};
e.COMBO_UNLOAD=0,e.COMBO_LOADING=1,e.COMBO_LOADED=2;
var n=function(e,t,n){
if(!o[e]){
o[e]=n;
for(var r=3;r--;)try{
moon.setItem(moon.prefix+e,n.toString()),moon.setItem(moon.prefix+e+"_ver",moon_map[e]);
break;
}catch(i){
moon.clear();
}
}
},r=window.alert;
window.__alertList=[],window.alert=function(e){
r(e),window.__alertList.push(e);
};
var i=function(e){
if(!e||!o[e])return null;
var n=o[e];
if("function"==typeof n&&!t[e]){
var a={},s={
exports:a
},c=n(i,a,s,r);
n=o[e]=c||s.exports,t[e]=!0;
}
if(".css"===e.substr(-4)){
var d=document.getElementById(e);
if(!d){
d=document.createElement("style"),d.id=e;
var _=/url\s*\(\s*\/(\"(?:[^\\\"\r\n\f]|\\[\s\S])*\"|'(?:[^\\'\n\r\f]|\\[\s\S])*'|[^)}]+)\s*\)/g,m=window.testenv_reshost||window.__moon_host||"res.wx.qq.com";
n=n.replace(_,"url(//"+m+"/$1)"),d.innerHTML=n,document.getElementsByTagName("head")[0].appendChild(d);
}
}
return n;
};
e.combo_status=e.COMBO_UNLOAD,e.run=function(){
var o=e.run.info,t=o&&o[0],n=o&&o[1];
if(t&&e.combo_status==e.COMBO_LOADED){
var r=i(t);
n&&n(r);
}
},e.use=function(o,t){
window.__wxgspeeds&&(window.__wxgspeeds.seajs_use_time=+new Date),e.run.info=[o,t],
e.run();
},window.define=n,window.seajs=e;
}(),function(){
if(window.__nonce_str){
var e=document.createElement;
document.createElement=function(o){
var t=e.apply(this,arguments);
return"object"==typeof o&&(o=o.toString()),"string"==typeof o&&"script"==o.toLowerCase()&&t.setAttribute("nonce",window.__nonce_str),
t;
};
}
window.addEventListener&&window.__DEBUGINFO&&Math.random()<.01&&window.addEventListener("load",function(){
var e=document.createElement("script");
e.src=__DEBUGINFO.safe_js,e.type="text/javascript",e.async=!0;
var o=document.head||document.getElementsByTagName("head")[0];
o.appendChild(e);
});
}(),function(){
function t(e){
return"[object Array]"===Object.prototype.toString.call(e);
}
function n(e){
return"[object Object]"===Object.prototype.toString.call(e);
}
function r(e){
var t=e.stack+" "+e.toString()||"";
try{
if(window.testenv_reshost){
var n="http(s)?://"+window.testenv_reshost,r=new RegExp(n,"g");
t=t.replace(r,"");
}else t=t.replace(/http(s)?:\/\/res\.wx\.qq\.com/g,"");
for(var r=/\/([^.]+)\/js\/(\S+?)\.js(\,|:)?/g;r.test(t);)t=t.replace(r,function(e,o,t,n){
return t+n;
});
}catch(e){
t=e.stack?e.stack:"";
}
var i=[];
for(o in u)u.hasOwnProperty(o)&&i.push(o+":"+u[o]);
return i.push("STK:"+t.replace(/\n/g,"")),i.join("|");
}
function i(e){
if(!e){
var o=window.onerror;
window.onerror=function(){},f=setTimeout(function(){
window.onerror=o,f=null;
},50);
}
}
function a(e,o,t){
if(!/^mp\.weixin\.qq\.com$/.test(location.hostname)){
var n=[];
t=t.replace(location.href,(location.origin||"")+(location.pathname||"")).replace("#wechat_redirect","").replace("#rd","").split("&");
for(var r=0,i=t.length;i>r;r++){
var a=t[r].split("=");
a[0]&&a[1]&&n.push(a[0]+"="+encodeURIComponent(a[1]));
}
var s=new window.Image;
return void(s.src=(o+n.join("&")).substr(0,1024));
}
var c;
if(window.ActiveXObject)try{
c=new ActiveXObject("Msxml2.XMLHTTP");
}catch(d){
try{
c=new ActiveXObject("Microsoft.XMLHTTP");
}catch(_){
c=!1;
}
}else window.XMLHttpRequest&&(c=new XMLHttpRequest);
c&&(c.open(e,o,!0),c.setRequestHeader("cache-control","no-cache"),c.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),
c.setRequestHeader("X-Requested-With","XMLHttpRequest"),c.send(t));
}
function s(e){
return function(o,t){
if("string"==typeof o)try{
o=new Function(o);
}catch(n){
throw n;
}
var r=[].slice.call(arguments,2),a=o;
return o=function(){
try{
return a.apply(this,r.length&&r||arguments);
}catch(e){
throw e.stack&&console&&console.error&&console.error("[TryCatch]"+e.stack),_&&window.__moon_report&&(window.__moon_report([{
offset:O,
log:"timeout_error;host:"+location.host,
e:e
}]),i(f)),e;
}
},e(o,t);
};
}
function c(e){
return function(o,t,n){
if("undefined"==typeof n)var n=!1;
var r=this,a=t||function(){};
return t=function(){
try{
return a.apply(r,arguments);
}catch(e){
throw e.stack&&console&&console.error&&console.error("[TryCatch]"+e.stack),_&&window.__moon_report&&(window.__moon_report([{
offset:y,
log:"listener_error;type:"+o+";host:"+location.host,
e:e
}]),i(f)),e;
}
},a.moon_lid=b,D[b]=t,b++,e.call(r,o,t,n);
};
}
function d(e){
return function(o,t,n){
if("undefined"==typeof n)var n=!1;
var r=this;
return t=D[t.moon_lid],e.call(r,o,t,n);
};
}
var _,m,l,w,u,p,f,h=/MicroMessenger/i.test(navigator.userAgent),g=window.define,v=0,y=2,x=4,O=9,j=10;
if(window.__initCatch=function(e){
_=e.idkey,m=e.startKey||0,l=e.limit,w=e.badjsId,u=e.reportOpt||"",p=e.extInfo||{},
p.rate=p.rate||.5;
},window.__moon_report=function(e,o){
var i=!1,s="";
try{
s=top.location.href;
}catch(c){
i=!0;
}
var d=.5;
if(p&&p.rate&&(d=p.rate),o&&"number"==typeof o&&(d=o),!(!/mp\.weixin\.qq\.com/.test(location.href)&&!/payapp\.weixin\.qq\.com/.test(location.href)||Math.random()>d)&&h&&(top==window||i||/mp\.weixin\.qq\.com/.test(s))&&(n(e)&&(e=[e]),
t(e)&&""!=_)){
var u="",f=[],g=[],v=[],y=[];
"number"!=typeof l&&(l=1/0);
for(var O=0;O<e.length;O++){
var j=e[O]||{};
if(!(j.offset>l||"number"!=typeof j.offset||j.offset==x&&p&&p.network_rate&&Math.random()>=p.network_rate)){
var D=1/0==l?m:m+j.offset;
f[O]="[moon]"+_+"_"+D+";"+j.log+";"+r(j.e||{})||"",g[O]=D,v[O]=1;
}
}
for(var b=0;b<g.length;b++)y[b]=_+"_"+g[b]+"_"+v[b],u=u+"&log"+b+"="+f[b];
if(y.length>0){
a("POST",location.protocol+"//mp.weixin.qq.com/mp/jsmonitor?","idkey="+y.join(";")+"&r="+Math.random()+"&lc="+f.length+u);
var d=1;
if(p&&p.badjs_rate&&(d=p.badjs_rate),w&&Math.random()<d){
u=u.replace(/uin\:(.)*\|biz\:(.)*\|mid\:(.)*\|idx\:(.)*\|sn\:(.)*\|/,"");
var E=new Image,S="https://badjs.weixinbridge.com/badjs?id="+w+"&level=4&from="+encodeURIComponent(location.host)+"&msg="+encodeURIComponent(u);
E.src=S.slice(0,1024);
}
}
}
},window.setTimeout=s(window.setTimeout),window.setInterval=s(window.setInterval),
Math.random()<.01&&window.Document&&window.HTMLElement){
var D={},b=0;
Document.prototype.addEventListener=c(Document.prototype.addEventListener),Document.prototype.removeEventListener=d(Document.prototype.removeEventListener),
HTMLElement.prototype.addEventListener=c(HTMLElement.prototype.addEventListener),
HTMLElement.prototype.removeEventListener=d(HTMLElement.prototype.removeEventListener);
}
var E=window.navigator.userAgent;
if((/ip(hone|ad|od)/i.test(E)||/android/i.test(E))&&!/windows phone/i.test(E)&&window.localStorage&&window.localStorage.setItem){
var S=window.localStorage.setItem,I=0;
window.localStorage.setItem=function(e,o){
if(!(I>=10))try{
S.call(window.localStorage,e,o);
}catch(t){
t.stack&&console&&console.error&&console.error("[TryCatch]"+t.stack),window.__moon_report([{
offset:j,
log:"localstorage_error;"+t.toString(),
e:t
}]),I++,I>=3&&window.moon&&window.moon.clear&&moon.clear();
}
};
}
window.seajs&&g&&(window.define=function(){
for(var o,t=[],n=arguments&&arguments[0],a=0,s=arguments.length;s>a;a++){
var c=o=arguments[a];
"function"==typeof o&&(o=function(){
try{
return c.apply(this,arguments);
}catch(o){
throw"string"==typeof n&&console.error("[TryCatch][DefineeErr]id:"+n),o.stack&&console&&console.error&&console.error("[TryCatch]"+o.stack),
_&&window.__moon_report&&(window.__moon_report([{
offset:v,
log:"define_error;id:"+n+";",
e:o
}]),i(f)),e(" [define_error]"+JSON.stringify(r(o))),o;
}
},o.toString=function(e){
return function(){
return e.toString();
};
}(arguments[a])),t.push(o);
}
return g.apply(this,t);
});
}(),function(o){
function t(e,o,t){
return window.__DEBUGINFO?(window.__DEBUGINFO.res_list||(window.__DEBUGINFO.res_list=[]),
window.__DEBUGINFO.res_list[e]?(window.__DEBUGINFO.res_list[e][o]=t,!0):!1):!1;
}
function n(e){
var o=new TextEncoder("utf-8").encode(e),t=crypto.subtle||crypto.webkitSubtle;
return t.digest("SHA-256",o).then(function(e){
return r(e);
});
}
function r(e){
for(var o=[],t=new DataView(e),n=0;n<t.byteLength;n+=4){
var r=t.getUint32(n),i=r.toString(16),a="00000000",s=(a+i).slice(-a.length);
o.push(s);
}
return o.join("");
}
function i(e,o,t){
if("object"==typeof e){
var n=Object.prototype.toString.call(e).replace(/^\[object (.+)\]$/,function(e,o){
return o;
});
if(t=t||e,"Array"==n){
for(var r=0,i=e.length;i>r;++r)if(o.call(t,e[r],r,e)===!1)return;
}else{
if("Object"!==n&&a!=e)throw"unsupport type";
if(a==e){
for(var r=e.length-1;r>=0;r--){
var s=a.key(r),c=a.getItem(s);
if(o.call(t,c,s,e)===!1)return;
}
return;
}
for(var r in e)if(e.hasOwnProperty(r)&&o.call(t,e[r],r,e)===!1)return;
}
}
}
var a=o.localStorage,s=document.head||document.getElementsByTagName("head")[0],c=1,d=11,_=12,m=13,l=window.__allowLoadResFromMp?1:2,w=window.__allowLoadResFromMp?1:0,u=l+w,p=window.testenv_reshost||window.__moon_host||"res.wx.qq.com",f=new RegExp("^(http(s)?:)?//"+p);
window.__loadAllResFromMp&&(p="mp.weixin.qq.com",l=0,u=l+w);
var h={
prefix:"__MOON__",
loaded:[],
unload:[],
clearSample:!1,
hit_num:0,
mod_num:0,
version:1003,
cacheData:{
js_mod_num:0,
js_hit_num:0,
js_not_hit_num:0,
js_expired_num:0,
css_mod_num:0,
css_hit_num:0,
css_not_hit_num:0,
css_expired_num:0
},
init:function(){
h.loaded=[],h.unload=[];
var e,t,r;
if(window.__moon_report_uin)try{
window.__moon_report_uin%1e3==120&&(h.clearSample=!0);
}catch(s){}
if(window.no_moon_ls&&(h.clearSample=!0),a){
var c="_moon_ver_key_",d=a.getItem(c);
d!=h.version&&(h.clear(),a.setItem(c,h.version));
}
if((-1!=location.search.indexOf("no_moon1=1")||-1!=location.search.indexOf("no_lshttps=1"))&&h.clear(),
a){
var _=1*a.getItem(h.prefix+"clean_time"),m=+new Date;
if(m-_>=1296e6){
h.clear();
try{
!!a&&a.setItem(h.prefix+"clean_time",+new Date);
}catch(s){}
}
}
i(moon_map,function(i,s){
if(t=h.prefix+s,r=!!i&&i.replace(f,""),e=!!a&&a.getItem(t),version=!!a&&(a.getItem(t+"_ver")||"").replace(f,""),
h.mod_num++,r&&-1!=r.indexOf(".css")?h.cacheData.css_mod_num++:r&&-1!=r.indexOf(".js")&&h.cacheData.js_mod_num++,
h.clearSample||!e||r!=version)h.unload.push(r.replace(f,"")),r&&-1!=r.indexOf(".css")?e?r!=version&&h.cacheData.css_expired_num++:h.cacheData.css_not_hit_num++:r&&-1!=r.indexOf(".js")&&(e?r!=version&&h.cacheData.js_expired_num++:h.cacheData.js_not_hit_num++);else{
if("https:"==location.protocol&&window.moon_hash_map&&window.moon_hash_map[s]&&window.crypto)try{
n(e).then(function(e){
window.moon_hash_map[s]!=e&&console.log(s);
});
}catch(c){}
try{
var d="//# sourceURL="+s+"\n//@ sourceURL="+s;
o.eval.call(o,'define("'+s+'",[],'+e+")"+d),h.hit_num++,r&&-1!=r.indexOf(".css")?h.cacheData.css_hit_num++:r&&-1!=r.indexOf(".js")&&h.cacheData.js_hit_num++;
}catch(c){
h.unload.push(r.replace(f,""));
}
}
}),h.load(h.genUrl());
},
genUrl:function(){
var e=h.unload;
if(!e||e.length<=0)return[];
var o,t,n="",r=[],i={},a=-1!=location.search.indexOf("no_moon2=1"),s="//"+p;
-1!=location.href.indexOf("moon_debug2=1")&&(s="//mp.weixin.qq.com");
for(var c=0,d=e.length;d>c;++c){
/^\/(.*?)\//.test(e[c]);
var _=/^\/(.*?)\//.exec(e[c]);
_.length<2||!_[1]||(t=_[1],n=i[t],n?(o=n+","+e[c],o.length>1e3||a?(r.push(n+"?v="+h.version),
n=location.protocol+s+e[c],i[t]=n):(n=o,i[t]=n)):(n=location.protocol+s+e[c],i[t]=n));
}
for(var m in i)i.hasOwnProperty(m)&&r.push(i[m]);
return r;
},
load:function(e){
if(window.__wxgspeeds&&(window.__wxgspeeds.mod_num=h.mod_num,window.__wxgspeeds.hit_num=h.hit_num),
!e||e.length<=0)return seajs.combo_status=seajs.COMBO_LOADED,seajs.run(),console.debug&&console.debug("[moon] load js complete, all in cache, cost time : 0ms, total count : "+h.mod_num+", hit num: "+h.hit_num),
void window.__moonclientlog.push("[moon] load js complete, all in cache, cost time : 0ms, total count : "+h.mod_num+", hit num: "+h.hit_num);
seajs.combo_status=seajs.COMBO_LOADING;
var o=0,t=+new Date;
window.__wxgspeeds&&(window.__wxgspeeds.combo_times=[],window.__wxgspeeds.combo_times.push(t)),
i(e,function(n){
h.request(n,u,function(){
if(window.__wxgspeeds&&window.__wxgspeeds.combo_times.push(+new Date),o++,o==e.length){
var n=+new Date-t;
window.__wxgspeeds&&(window.__wxgspeeds.mod_downloadtime=n),seajs.combo_status=seajs.COMBO_LOADED,
seajs.run(),console.debug&&console.debug("[moon] load js complete, url num : "+e.length+", total mod count : "+h.mod_num+", hit num: "+h.hit_num+", use time : "+n+"ms"),
window.__moonclientlog.push("[moon] load js complete, url num : "+e.length+", total mod count : "+h.mod_num+", hit num: "+h.hit_num+", use time : "+n+"ms");
}
});
});
},
request:function(o,n,r){
if(o){
n=n||0,o.indexOf("mp.weixin.qq.com")>-1&&((new Image).src=location.protocol+"//mp.weixin.qq.com/mp/jsmonitor?idkey=27613_32_1&r="+Math.random(),
window.__moon_report([{
offset:_,
log:"load_script_from_mp: "+o
}],1));
var i=-1;
window.__DEBUGINFO&&(__DEBUGINFO.res_list||(__DEBUGINFO.res_list=[]),__DEBUGINFO.res_list.push({
type:"js",
status:"pendding",
start:+new Date,
end:0,
url:o
}),i=__DEBUGINFO.res_list.length-1),-1!=location.search.indexOf("no_lshttps=1")&&(o=o.replace("http://","https://"));
var a=document.createElement("script");
a.src=o,a.type="text/javascript",a.async=!0,a.down_time=+new Date,a.onerror=function(s){
t(i,"status","error"),t(i,"end",+new Date);
var _=new Error(s);
if(n>=0)if(w>n){
var l=o.replace("res.wx.qq.com","mp.weixin.qq.com");
h.request(l,n,r);
}else h.request(o,n,r);else window.__moon_report&&window.__moon_report([{
offset:c,
log:"load_script_error: "+o,
e:_
}],1);
if(n==w-1&&window.__moon_report([{
offset:d,
log:"load_script_error: "+o,
e:_
}],1),-1==n){
var u="ua: "+window.navigator.userAgent+", time="+(+new Date-a.down_time)+", load_script_error -1 : "+o;
window.__moon_report([{
offset:m,
log:u
}],1);
}
window.__moonclientlog.push("moon load js error : "+o+", error -> "+_.toString()),
e("moon_request_error url:"+o);
},"undefined"!=typeof moon_crossorigin&&moon_crossorigin&&a.setAttribute("crossorigin",!0),
a.onload=a.onreadystatechange=function(){
t(i,"status","loaded"),t(i,"end",+new Date),!a||a.readyState&&!/loaded|complete/.test(a.readyState)||(t(i,"status","200"),
a.onload=a.onreadystatechange=null,"function"==typeof r&&r());
},n--,s.appendChild(a),e("moon_request url:"+o+" retry:"+n);
}
},
setItem:function(e,o){
!!a&&a.setItem(e,o);
},
clear:function(){
a&&(i(a,function(e,o){
~o.indexOf(h.prefix)&&a.removeItem(o);
}),console.debug&&console.debug("[moon] clear"));
},
idkeyReport:function(e,o,t){
t=t||1;
var n=e+"_"+o+"_"+t;
(new Image).src="/mp/jsmonitor?idkey="+n+"&r="+Math.random();
}
};
seajs&&seajs.use&&"string"==typeof window.__moon_mainjs&&seajs.use(window.__moon_mainjs),
window.moon=h;
}(window),function(){
try{
Math.random()<1;
}catch(e){}
}(),window.moon.init();
};
e(),!!window.__moon_initcallback&&window.__moon_initcallback(),window.__wxgspeeds&&(window.__wxgspeeds.moonendtime=+new Date);
}
}
__moonf__(); }, 25);</script><script nonce="" type="text/javascript">
    var real_show_page_time = +new Date();
    if (!!window.addEventListener){
        window.addEventListener("load", function(){
            window.onload_endtime = +new Date();
        });
    }
    
</script>

    
    <script nonce="" type="text/javascript">document.addEventListener("touchstart", function() {},false);</script>

<!--tailTrap<body></body><head></head><html></html>-->
<div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div><div style="position: absolute; top: 10px; right: 30px; padding: 5px; border-radius: 5px; box-shadow: rgb(92, 184, 229) 0px 0px 2px; z-index: 999999; background-color: rgba(92, 184, 229, 0.498) !important; display: none;"><div style="padding: 20px;border: 1px solid rgb(92, 184, 229);background: white;border-radius: 5px;width: 330px;">该扩展暂不支持收藏该类型https类网站，可前往Chrome应用商店 <a style="color:#1d7fe2" href="https://note.youdao.com/download.html#other" target="_blank">下载</a> 有道云笔记网页剪报插件</div></div></body></html>